暇人じゃない

Mac OS X 10.6.4 における mysql-python のインストールと Django のデータベース設定
DjangoMacPython

タイトルが長くなりましたがタイトルの通りです。

環境: 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 のパスを探す

僕の環境では、mysqlconfig は **mysqlconfig5** というコマンドになっていました。 which コマンドで mysql_config5 へのパスを探します。

% which mysql_config5
/opt/local/bin/mysql_config5

site.cfg の修正

mysql-python のセットアップディレクトリにある、site.cfg ファイルに先ほど探した mysqlconfig5 へのファイルを記述します。 mysqlconfig = がコメントアウトされているので、コメントアウトを解除して記述してください。

~/.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': '',
    }
}

About

chocoby (GitHub / Twitter)

フリーのソフトウェア開発者です。 Ruby を使った Web 開発を得意としています。