Mac OS X 10.6.4 における mysql-python のインストールと Django のデータベース設定
タイトルが長くなりましたがタイトルの通りです。
環境: MacOS X 10.6.4 MySQL 5.1.46 Python 2.6.5 Django 1.2.3
mysql-python のインストール
一般的な環境(?)に mysql-python をインストールしたい場合には以下のように pip でインストールしてあげれば良いのですが、dmg パッケージからインストールした MySQL ではエラーが出ました。
% sudo 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: command not found
Traceback (most recent call last):
File "<string>", line 14, in <module>
File "/Users/chocoby/.virtualenvs/tag/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: command not found
# ... 以下略
どうやら mysql_config が見つからないみたいです。
mysql_config のパスを探す
僕の環境では、mysql_config は mysql_config5 というコマンドになっていました。 which コマンドで mysql_config5 へのパスを探します。
% which mysql_config5
/opt/local/bin/mysql_config5
site.cfg の修正
mysql-python のセットアップディレクトリにある、site.cfg ファイルに先ほど探した mysql_config5 へのファイルを記述します。 mysql_config = がコメントアウトされているので、コメントアウトを解除して記述してください。
~/.virtualenvs/tag/build/mysql-python/site.cfg (virtualenv を使用している為、このようなパスになっています。)
```options
# embedded: link against the embedded server library
# threadsafe: use the threadsafe client
# static: link against a static library (probably required for embedded)
embedded = False
threadsafe = True
static = False
# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /opt/local/bin/mysql_config5
# ... 以下略
インストール
もう一度 pip install mysql-python します。
% sudo pip install mysql-python
Downloading/unpacking mysql-python
Running setup.py egg_info for package mysql-python
warning: no files found matching 'MANIFEST'
warning: no files found matching 'ChangeLog'
warning: no files found matching 'GPL'
Installing collected packages: mysql-python
Running setup.py install for mysql-python
building '_mysql' extension
# ... 省略
Successfully installed mysql-python
Cleaning up...
mysql-python のインストールが完了しました。 実際にインポートできるか試してみましょう。
% python
Python 2.6.5 (r265:79063, Sep 1 2010, 21:41:05)
[GCC 4.2.1 (Apple Inc. build 5659)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>
インポートできていますね。
Django のデータベース設定
settings.py のデータベース設定は以下のようになっています。 HOST は指定しなくても良いはずなのですが、/opt/local/var/run/mysql5/mysqld.sock という socket を見に行こうとするため、my.cnf で設定している socket である /tmp/mysql.sock を、HOST で指定しています。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysqldatabase',
'USER': 'mysqluser',
'PASSWORD': 'mysqlpassword',
'HOST': '/tmp/mysql.sock',
'PORT': '',
}
}