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が動かなくなった。どうやらyumpythonで書かれているらしい。始めて知った。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, in 
    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 
    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

こんな感じでできました。