pythonでdjango開発ことはじめ db構築まで

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が動かなくなった。どうやら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 <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

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 <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