さくらのレンタルサーバに Python モジュールをインストール

公開:
2013-02-08

さくらインターネットの「さくらのレンタルサーバ」サービスで Python の外部モジュールを導入・利用するための覚え書きです。旧版「さくらのレンタルサーバで Python 外部モジュールを使う」以降、事情の変わってきたところについてまとめました。

今まで通りでもよい

今まで通り、setup.py install--prefix オプションを指定するやり方も使えます。その場合は旧版「さくらのレンタルサーバで Python 外部モジュールを使う」で解説しているとおり、実行するスクリプトの側で sys.path にモジュールのインストール先を手動で追加します。

最近は保守性の観点からシステムの環境は触らずにモジュール導入環境を実行ドメインごとに用意するやり方が主流のようです。その場合はシステム規定の場所ではなく、専用のカスタム・ディレクトリを用意してそこにモジュールをインストールすることになります。

とはいえ、さくらのレンタルサーバでできるのはがんばっても所詮 CGI なので、そこまで厳格でなくていいような気もします。システム規定の場所へのインストールでよいならば、Python 2.6 からは以下のような道が用意されました。

ユーザー・サイト

旧版を書いてから悠久の時は流れ、インストールされている Python インタプリタのバージョンは 2.7 になりました。Python は 2.6 から、モジュールの検索順にユーザー・サイトのディレクトリというものが追加されています。その場所は次のようにして確認できます。

% python
Python 2.7.3 (default, May 16 2012, 14:24:13)
[GCC 4.2.1 20070719  [FreeBSD]] on freebsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.USER_SITE
'/home/****/.local/lib/python2.7/site-packages'

このように、さくらのレンタルサーバ(というか FreeBSD)ではその値は本稿執筆時点で ~/.local/lib/python2.7/site-packages となっています。このディレクトリが存在していると、Python インタプリタはそのパスを sys.path に自動的に追加します(ディレクトリが実際に存在していないと追加されません)。

スタンダードプラン以上であれば、SSH でログインして以下のようにユーザー・サイトのディレクトリを用意します。

% mkdir -p ~/.local/lib/python2.7

そのうえで、インストールしようとしているモジュールのアーカイブを展開して python setup.py install を実行するときに --user オプションを付けます(現時点では、Python ドキュメントの日本語版ではこのオプションについてまだ記述されていないようです)。

% python setup.py install --user

これで上記で作ったディレクトリにモジュールがセットアップされます。sys.path に手動で値を追加する必要がなくなったので、以前と比べて楽になりました。

セットアップ設定ファイル

setup.py を実行するときに --user を付けるのを忘れないように、これをデフォルトの設定にすることができます。ホームディレクトリに .pydistutils.cfg という名前で以下のような内容のファイルを用意します。

[install]
user=1

これで、python setup.py install を実行したときの規定の動作が --user オプションを付けたときと同じになります。

パッケージ導入ツール

いつのまにか、さくらのレンタルサーバのホストで Python のパッケージ導入ツールである easy_install コマンドが使えるようになっていました(/usr/local/bin に入っています)。easy_install コマンドにはモジュールのインストール先を指定する --prefix オプションがあるので、次のようにすれば、PyPI に公開されているモジュールをユーザー・サイトのディレクトリにインストールできます(foobar はインストールするモジュール名)。

% easy_install --prefix=~/.local foobar

また、easy_install.pydistutils.cfg があればその設定を使用するので、ここに前述のインストール設定があれば、--prefix オプションを付けることなく、次のようにするだけで、ユーザー・サイトにモジュールをインストールできます。

% easy_install foobar

easy_install じゃなくて pip のほうが云々という話もありますが、それはまた別のトピックなのでここでは割愛。

まとめ

参考文献

27.14. site — サイト固有の設定フック — Python 2.7ja1 documentation

Python モジュールのインストール — Python 2.7ja1 documentation

Installing Python Modules — Python v2.7.3 documentation

改訂履歴

2013-02-08
公開。

免責・ライセンス

記述はできるだけ正確なものを心がけてはいますが、作者の知識や調査の不足などから間違ったことが書いてあるかもしれません。この文書の情報にもとづいた行動によって何らかの被害が生じた場合でも、作者はその責任を負いませんので、あしからず。

Copyright 2013 Masaaki Shibata.

Creative Commons License
This work is licensed under a Creative Commons Attribution 2.1 Japan License.
この文書は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。


このサイトについてのお問い合わせはゲストブックよりお寄せください。