pythonでdjango開発ことはじめ db構築まで
- re_shikajiro
- 2011年4月9日
Table of Contents
環境構築
- debian6
- python2.6
- django1.3
なんでdebianにしたのか
簡単だったからです。最初centos5でやってたんだけど、デフォルトのpythonが2.4でちょっと古い。djangoのサイトには
Django は バージョン 2.3 以上の Python で動作しますが、 2.5 以降がお勧めです。という のも、 Python 2.5 からは、 SQLite という軽量なデータベースが付属するからで す。
とあるので、バージョンを上げたい。でもyumのパッケージ管理では2.4.3がMAXなので、python2.7のソースコードを落としてmake installした。pythonのシンボリックリンクをpython2.7に変更していざ始めようとしたら、yumが動かなくなった。どうやらyumはpythonで書かれているらしい。始めて知った。yumだけpython2.4使わせればいいかなとか色々やったけど、めんどくさいことになった。というわけで、centosは辞めてdebianで再構築。pythonのデフォルトは2.6。よかったよかった。
databaseとmodel
開発サーバー起動まではすんなりいったけど、DATABASEの設定、model周りが上手くいかなかった。setting.pyにdbの設定をしてサーバー起動するとエラーに。
root@debian:~/tmp/sampledjango# python manage.py runserver 172.16.33.135:8000 Validating models...Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x12537d0>> Traceback (most recent call last): File “/usr/local/lib/python2.6/dist-packages/django/core/management/commands/runserver.py”, line 88, in inner_run self.validate(display_num_errors=True) File “/usr/local/lib/python2.6/dist-packages/django/core/management/base.py”, line 243, in validate from django.core.management.validation import get_validation_errors File “/usr/local/lib/python2.6/dist-packages/django/core/management/validation.py”, line 3, in <module> from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation File “/usr/local/lib/python2.6/dist-packages/django/contrib/contenttypes/generic.py”, line 6, in <module> from django.db import connection File “/usr/local/lib/python2.6/dist-packages/django/db/init.py”, line 78, in <module> connection = connections[DEFAULT_DB_ALIAS] File “/usr/local/lib/python2.6/dist-packages/django/db/utils.py”, line 93, in getitem backend = load_backend(db[‘ENGINE’]) File “/usr/local/lib/python2.6/dist-packages/django/db/utils.py”, line 33, in load_backend return import_module(’.base’, backend_name) File “/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py”, line 35, in import_module import(name) File “/usr/local/lib/python2.6/dist-packages/django/db/backends/mysql/base.py”, line 14, in <module> raise ImproperlyConfigured(“Error loading MySQLdb module: %s” % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
easy_install か pip で MySQL-python をインストールしないとだめらしい。pythonのパッケージ管理システムpipを使ってみることにした。
pip-1.0.tar.gzをwgetしてpython setup.py installしてみる。
root@debian:~/tmp/pip-1.0# python setup.py Traceback (most recent call last): File "setup.py", line 3, in <module> from setuptools import setup ImportError: No module named setuptools root@debian:~/tmp/pip-1.0# python setup.py install Traceback (most recent call last): File "setup.py", line 3, in <module> from setuptools import setup ImportError: No module named setuptools
setuptoolsというのがいるらしい。
Python Package Index : setuptools 0.6c11
eggを落として実行。
root@debian:~/tmp/pip-1.0# sh setuptools-0.6c11-py2.6.egg</blockquote> <p>pipを再度installしたら成功。</p> <p>次は目的の<a class="keyword" href="http://d.hatena.ne.jp/keyword/mysql-python">mysql-python</a>のインストール。もちろん一発では上手くいかない。</p>
Downloading/unpacking mysql-python Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded Running setup.py egg_info for package mysql-python sh: mysql_config: not found Traceback (most recent call last): File "<string>", line 14, in <module> File "/root/tmp/build/mysql-python/setup.py", line 15, in <module> metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 24, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found Complete output from command python setup.py egg_info: sh: mysql_config: not found Traceback (most recent call last): File "<string>", line 14, in <module> File "/root/tmp/build/mysql-python/setup.py", line 15, in <module> metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 24, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found