Category Archives: Python

ipythonのログを自動で取っておく

ログだけ見直したら何やっていたか思い出す。そんなことが多いです。

ipythonのログを自動で取っておく方法ですが、ログファイルを一々指定するの面倒だし、保存場所は指定したいしといことで、下記を参考にしました。

~/.ipython/profile_default/startup/01-log-everything.py

に、

一日毎に取るのがよいかどうかは人によりけりだと思いますが。
ありがたいです。

Pythonによるデータ分析入門:p.28

p28のDataFrame.read_tableが動かないんですよ。

p28
修正前
users = pd.read_table(‘pydata-book/datasets/movielens/users.dat’, sep=’::’, header=None, names=unames)
修正後
users = pd.read_table(‘pydata-book/datasets/movielens/users.dat’, sep=’::’, header=None, names=unames, engine=’python’)

Pythonによるデータ分析入門:メモ – 競プロ記録

神。新しい版なら直ってるんだろか。

pandasでDataFrameをjoin

pandasでDataFrameをjoinなんて簡単にできるだろ、と思ってたら超簡単でした。

In [1]: pd.merge(df1, df2, left_on=”id”, right_on=”userid”)

みたいに、join_onしたいcolumn名を指定してあげるだけです。
left_joinやright_joinもあるみたいですよ。

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html

pandasでexcelのインポート、エクスポート

ipythonでpandasはcsvにさくっと出力できるんですよね。入力もできます。

で、似た感じでエクセルデータをやり取りするには

$ pip install xlrt

して、

In[] : df = pd.read_excel(‘path/file’)

でインポートできるというスグレモノ。スグレモノすぎる。
で、出力も同じように

In[] : df.to_excel(‘path/file’)

しようとしたら、

ModuleNotFoundError: No module named ‘xlwt’

って出るので何でだろ?と思ったら出力は”xlwt”なんですね。 excel write だ。
読み込むほうは “xlrd”でした。excel readですね。

django2をec2のapache2.4のvirtualhostで動かすhttpd.conf

django2をec2で動かしたいけど、apache2.4はすでに走っていてPHPのサイトがある、のでvirtualhostでdjango動かすというのが何とか起動まで確認できました。

もともとvirtualhostは動いてますのでそこの設定は省略で。
気をつけるところは、

WSGIDaemonProcess hoge.com python-path=/var/www/project/mysite python-home=/var/www/project/venv/

ではないでしょうか。python-pathもpython-homeもいるのに気付かず、venv環境が読めていなかったのと、
Directoryの中に設定を置いて、

Syntax error on line 4 of /etc/httpd/conf.d/11-django.conf:
WSGIDaemonProcess not allowed in context

などと怒られたりしていました。何にしろphpもpythonも同じapacheで動いているので節約できる・・のですが、やはりこんなことはあまりしたくないですね笑

django2をapache2 @ ec2 で動かす。

django2をec2のapacheで動かします。とりあえずvenvを起動。

django2.0でapache2で動かす。

djangoでapacheでlocalhostで動かしてみよ、と思っただけで、数時間経過しました笑
いやー、本当このあたりがややこしくて面倒ですね。私みたいにここでへこたれそうな人たちのためにメモを残しておきます。
とりあえず今起動まで出来た設定です。
こういうの考えるとPHPはいかに優しいかというのが身にしみますね。

・プロジェクトのために作ったディレクトリ:project
project
–project
–mysite
–blog
–static
みたいな感じですね。
・venvの環境:venv

として読み替えてください。

httpd.confに、

です。
どれが何の設定、というのはおいおい追っていきます・・

あ、後、mysqlを動かすためにpipで

PyMySQL

を入れていたのですが、apacheだと、

mysqlclient

を要求されたので、pip installしました。

Djangoでは常にカスタムUserを使用すべき

まさに仰るとおりだと思ったのでメモります。

https://qiita.com/NAKKA-K/items/7627b6a22f364941b989

最近物忘れがひどく笑

まだsuperuser以外のユーザを作ったこともないですが、大事だと思った。

そして、カスタム例としては

https://qiita.com/okoppe8/items/10ae61808dc3056f9c8e

で。参考になります。

DjangoでAttributeError: ‘str’ object has no attribute ‘tzinfo’が出たら

AttributeError: ‘str’ object has no attribute ‘tzinfo’

ってエラーで、

・既存のテーブルをmodel.pyで使ってるから何かおかしかった?
・TimeZoneがAsia/Tokyoだから models.pyの models.DateTimeFieldの中で特殊なことをしなくてはいけない?

など色々考えたのですが、models.DateTimeFieldとか使う場合には、

from django.utils import timezone

がいる、というだけなのですよね・・(汗

散々検索してしまった。同じような人のためにメモを残しておきます。

DockerでDjango Qucikstart

DockerでDjango動いたら幸せになるんじゃないかという青い鳥を求めました。
とりあえず公式のQuickStartをやってみます。

https://docs.docker.com/compose/django/

なんにしろvenvで仮想環境を構築。

$ python3 -m venv dd_project
$ cd dd_prioject
$ source bin/activate

pipでdjango入れておきます。

$ pip install --upgrade pip
$ pip install "django==2.0.1"

Dockerfile作れとのこと。

$ vi Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

psycopg2がいるらしいのでpipで入れておきます。

$ pip install psycopg2

requirements.txtを使うらしいので、作っときます。pipのいいところ。

$ pip freeze > requirements.txt

compose.ymlがいるとのこと。ここらへんのdocker設定、やったことあるはずなのにきちんと理解してないんですよね。。学ばねば。

$ vi docker-compose.yml
version: '3'

services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

んで、docker-compose

$ docker-compose run web django-admin.py startproject composeexample .

これがよく分からないのであとで追わねば。まあwebサーバとしてrunして、djangoの新規プロジェクトを作ってる、っていうイメージの設定を書いてるんでしょね。

でup、と。

$ docker-compose up

これだ確かにlocalhost:8000でアクセスできます。
postgresも動いているっぽいです。

これでdbをrdsで動くようにして、サーバはdockerrunじゃなくてwebでって設定できればecsにあげるだけで動く幸せシステムができるんでしょか。