Category Archives: Python - Page 2

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にあげるだけで動く幸せシステムができるんでしょか。

macでbrewでpythonで”pyenv: python3: command not found”が出る

何も変えてないのに(まあOS updateとかで変わってるんですが^^;)

python使ってたら


pyenv: python3: command not found

と出てしまう時、

The `python3′ command exists in these Python versions:
3.5.1

と表示さるので、


$ pyenv global system 3.5.1

とするのでした。これでバージョンを指定できるというのは便利ですよね。

DQL; DynamoDBをSQLライクに扱う

AWS DynamoDBは素晴らしいんですが、WEBインターフェースが結構使いにくい、、ので、SQLっぽく操作できるこちらです。

https://github.com/stevearc/dql

これが早速Pythonだったりしてw
python2.7.11で動きました。

DQLを使ってDynamoDBをSQL操作する

SELECT 文に SAVE オプションを渡すと、ファイル出力できます。

とのこと。

> eu-central-1> SELECT * FROM Movies SAVE Movies.json;
> Saved 1 record to Movies.json

これは便利。

Pythonのpyenvがmac(Sierra 10.12.3)に入らない

というわけで、PythonとかGoも同じスクリプト仲間?ということでちょいちょい書くかもしれません。
で、Python2をずっと使ってたんですが、2も3も同居させたい時にはやはりpyenvじゃないでしょうか。
こういうものがある時点でカオスですがw

$ brew install pyenv

でpyenvを入れたはいいけど、

$ pyenv install 3.5.1

で、

 BUILD FAILED (OS X 10.12.3 using python-build 20160130)

と怒られてしまいました。あるあるですけど、Sierraにした際に、Xcode Toolsのアップデートが必要だったということで。これ、一緒にアップデートしてくれないかな?と思うのですが。。

$ xcode-select –install

私はこれで無事pyenvをインストールできました。