オープンデータとプログラミング

レンタルサーバにpython MySQLdbをインストールしてみる

レンタルサーバでMySQLdbを使おうとしたら、どうもモジュールのビルドが必要らしい。

試行錯誤しながらやってみました。

私の環境は、レンタルサーバ(VALUESERVER)。

もともとVALUESERVERではPython 2.6が提供されているのですが、2.7を使用したかったため自分のホームディレクトリにpython 2.7環境を作って利用しています。

仮想環境の場合だと、手順どおりにいかない場合もあるので備忘録を作成しておきます。

1.環境
環境は以下のとおり。

・Python: Python 2.7.6 (仮想環境)
・Linux: CentOS release 6.5

2.ダウンロード
まずは、以下のサイトから現時点(2014.5.4)で最新のMySQL-python-1.2.4b4.tar.gzをダウンロード。

https://pypi.python.org/pypi/MySQL-python/1.2.4b4

3.インストール
 通常は以下のインストール手順でうまくいくはずだが、今回はbuildがすんなりいきませんでした。

$ tar xfz MySQL-python-1.2.4b4.tar.gz
$ cd MySQL-python-1.2.4b4
$ python setup.py build
$ python setup.py install

以降はbuild方法について書いておきます。

4.ビルドしてみる
ビルドすると、「Python.hがない!」と怒られます。

$ python setup.py build
running build
running build_py
copying MySQLdb/release.py -> build/lib.linux-x86_64-2.7/MySQLdb
running build_ext
building '_mysql' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1.2.4b4 -I/usr/include/mysql -I(ここにPYTHONPATHがは設定される)/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1
_mysql.c:29:20: error: Python.h: No such file or directory
_mysql.c:40:26: error: structmember.h: No such file or directory
<<以下省略>>

ネットでいろいろ調べていると、いつもお世話になっているstackoverflowに同じ事象の質問がありました。

「Using PIP in a virtual environment, how do I install MySQL-python」

http://stackoverflow.com/questions/3960305/using-pip-in-a-virtual-environment-how-do-i-install-mysql-python

この質問はPIPコマンドでインストールした場合についてですが、根本的にはビルドのところでエラーになっている点では同じです。

それで、回答としては

「python-devをインストールしろ」

とかいてあります。

python-devには、Python モジュールの構築に必要なヘッダファイル、静的ライブラリなどが含まれていますので、これをインストールしてね、ということです。

私の場合は、先日Python 2.7.6をビルドしたときのパッケージが残ってた(?)のでそちらのヘッダファイルを使うことにしました。
#単にpython-devのインストールが面倒だっただけですが…

$find . -name Python.h -print
$./pkg_bakup/Python-2.7.6/Include/Python.h

上記のIncludeディレクトリは以下にあったヘッダファイル類を全部

$PYTHONPATH/include/python2.7

にコピーしてやります。

5.ビルドしてみる(再チャレンジ)

再び、setup build。

$ python setup.py build

すると今度は、「pyconfig.hがない」と怒られます。

($PYTHONPATHが設定される)/include/python2.7/Python.h:8:22: error: pyconfig.h: No such file or directory

そこでまた、Python 2.7.6をビルドしたときの環境からpyconfig.hをもってきます。
findすると4つヒット。
2行目のファイルを例によってincludeディレクトリ配下にコピーします。

$ find . -name pyconfig.h -print
./pkg_bakup/Python-2.7.6/pyconfig.h  ★コレ
./pkg_bakup/Python-2.7.6/PC/os2vacpp/pyconfig.h
./pkg_bakup/Python-2.7.6/PC/pyconfig.h
./pkg_bakup/Python-2.7.6/PC/os2emx/pyconfig.h
./pkg_bakup/Python-2.7.6/RISCOS/pyconfig.h

6.ビルドしてみる(再々チャレンジ)

$ python setup.py build

今度は成功!

7.インストール

最後にインストール。

python setup.py install

以上で完了です。

Comments are closed.