バリューサーバーで python の easy_install を使う

バリューサーバー で mysql-python を使いたかったので、easy_install を使ってインストールしました。バリューサーバーには既に easy_install は入っています。ただ、そのまま easy_install コマンドを実行しても、システム標準の場所にインストールしようとして失敗します。そこで、あらかじめ設定しておきます。.pydistutils.cfg を作ることで easy_install に –prefix オプションをつける必要はなくなります。また、sys.path に PATH の追加もしないで済むので楽になります。

バリューサーバー で mysql-python を使いたかったので、easy_install を使ってインストールしました。

以下は、valueserver.jp に SSH でログインして実行しています。

使いたいパッケージが入っているか調べる

前に書いた記事「python版phpinfo」の pyinfo.py をインストールして見てみます。

pyinfo.pyの導入

$ wget http://www.twoevils.org/files/pyinfo.txt
--2014-06-04 09:42:53--  http://www.twoevils.org/files/pyinfo.txt
www.twoevils.org をDNSに問いあわせています... 204.246.122.18
www.twoevils.org|204.246.122.18|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 11715 (11K) [text/plain]
`pyinfo.txt' に保存中

100%[===================================>] 11,715      --.-K/s 時間 0s      

2014-06-04 09:42:54 (78.6 MB/s) - `pyinfo.txt' へ保存完了 [11715/11715]

$ mv pyinfo.txt pyinfo.py
$ chmod 755 pyinfo.py

ブラウザで pyinfo.pyに アクセスして、表示してみると MySQL-Python は入っていませんでした。

pyinfo.pyの表示結果

そこで、独自にインストールします。

以下の作業は「さくらのレンタルサーバに Python モジュールをインストール」というページに書いてあることを、そのままバリューサーバーで実行しました。

easy_install の確認

バリューサーバーには既に easy_install は入っています。

$ which easy_install
/usr/bin/easy_install

ただ、そのまま easy_install コマンドを実行しても、システム標準の場所にインストールしようとして失敗します。

そこで「さくらのレンタルサーバに Python モジュールをインストール」に書いてある通り、あらかじめ設定しておきます。

*上記のサイトには、ローカルにインストールするオプションや、ローカルに入れたモジュールを使う方法も書いてあります。

site.USER_SITE の確認

Python を起動して、ユーザー・サイト用のディレクトリがどこに設定されているかを調べます。

$ python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.USER_SITE
'/virtual/xxxxx/.local/lib/python2.6/site-packages'
>>>

設定されているのは ‘/virtual/xxxxx/.local/lib/python2.6/site-packages’ ですが、そのディレクトリは用意されていませんので、自分で作る必要があります。ちなみに、/virtual/xxxxx が自分のホームディレクトリになります。

$ mkdir -p ~/.local/lib/python2.6

.pydistutils.cfg の作成

.pydistutils.cfg を作ることで easy_install に –prefix オプションをつける必要はなくなります。また、sys.path に PATH の追加もしないで済むので楽になります。

$ echo '[install]' > ~/.pydistutils.cfg
$ echo 'user=1' >> ~/.pydistutils.cfg
$ cat ~/.pydistutils.cfg 
[install]
user=1

easy_install を使ってみる

後は、普通に easy_install コマンドでモジュールをインストールできます。

MySQL-Python をインストールします。

$ easy_install mysql-python
Searching for mysql-python
Reading http://pypi.python.org/simple/mysql-python/
Best match: MySQL-python 1.2.5
Downloading https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c
Processing MySQL-python-1.2.5.zip
Running MySQL-python-1.2.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-UDQRse/MySQL-python-1.2.5/egg-dist-tmp-yYD_3Q
/usr/include/mysql/my_config.h:14 から include されたファイル中,
                 _mysql.c:44 から:
/usr/include/mysql/my_config_x86_64.h:422:1: 警告: "HAVE_WCSCOLL" が再定義されました
/usr/include/python2.6/pyconfig.h:6 から include されたファイル中,
                 /usr/include/python2.6/Python.h:8 から,
                 _mysql.c:29 から:
/usr/include/python2.6/pyconfig-64.h:808:1: 警告: ここが以前の宣言がある位置です
zip_safe flag not set; analyzing archive contents...
Adding MySQL-python 1.2.5 to easy-install.pth file

Installed /virtual/xxxxx/.local/lib/python2.6/site-packages/MySQL_python-1.2.5-py2.6-linux-x86_64.egg
Processing dependencies for mysql-python
Finished processing dependencies for mysql-python

先ほどの、pyinfo.py にブラウザでアクセスしてみると MySQL (MySQL-Python) が enabled に変わっています。

pyinfo.pyの表示結果

サーバーの細かな設定が誰でも読めてしまうのは、セキュリティの心配があるので、当サイトでは確認終了後に pyinfo.py は削除しました。

$ rm pyinfo.py