pythonでdjango開発ことはじめ db構築まで
環境構築
- 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> 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 from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation File "/usr/local/lib/python2.6/dist-packages/django/contrib/contenttypes/generic.py", line 6, in from django.db import connection File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 78, in 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 raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
python - Getting "Error loading MySQLdb module: No module named MySQLdb" - have tried previously posted solutions - Stack Overflow
easy_install か pip で MySQL-python をインストールしないとだめらしい。pythonのパッケージ管理システムpipを使ってみることにした。
pip-1.0.tar.gz
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, infrom 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 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
pipを再度installしたら成功。
次は目的のmysql-pythonのインストール。もちろん一発では上手くいかない。
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 "", line 14, in File "/root/tmp/build/mysql-python/setup.py", line 15, in 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 " ", line 14, in File "/root/tmp/build/mysql-python/setup.py", line 15, in 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 Command python setup.py egg_info failed with error code 1 Storing complete log in /root/.pip/pip.log
- -
なるほど。わからん。偉い人が言うにはmysql_configが無いormysql_config5になってるとのこと。
apt-get install libmysqlclient-dev python2.6-dev
必要っぽい物をインストール。
apt-get install libmysqlclient-dev python2.6-dev
こんな感じでできました。