Python のパッケージ管理関係の情報があまりオフィシャルには整理されてなくて、 パッケージ管理まわりででてくるキーワードもいくつもあって分かり難いので完結にまとめてみた。
目次
Python におけるパッケージ管理に関係のあるキーワードをアルファベット順に。
PyPI: the Python Package Index。 だれでも Python のパッケージが登録できる python.org のサイト。 後述の easy_install とか pip はここからパッケージを探してきてインストールしてくれる。
Python のソースコードの入ったディレクトリに:
from distutils.core import setup
setup(name='foo',
version='1.0',
py_modules=['foo'],
)
のような setup.py というファイルを用意する。 この例では foo というモジュールがあるモジュール配布物 (module distribution) を定義している。 setup.py ができたら、:
python setup.py sdist
を実行する。そうすると、dist というディレクトリに module distribution の .zip や .tar.gz ファイルが作成される。これを配布すれば良い。
配布されたパッケージをインストールするには、sdist で作成されたファイルをダウンロード・解凍して、展開先のディレクトリで:
python setup.py install
を実行すればよい。site-packages にインストールが行われる。 User site directory にインストールしたい場合には、 install コマンドに --user オプションを付ける。 --user オプションを付ければ、非rootユーザも自分のホームディレクトリにモジュール配布物をインストールすることができる。 その他のコマンドの一覧は:
python setup.py --help-commands
で表示できる。
distutils ドキュメントには、setup に渡す requires パラメータで依存関係が定義できる という下りがあるが、 setup のパラメータ一覧 には requires はないようにみえる。整合性が取れていなくてよく分からない。 PEP314 にはrequires に関する言及がある。 おそらく現行(2.7)の distutils では依存関係の宣言とそれによるインストールはサポートされていない。
setuptoolsのクローン。setuptools の開発が進まないので、 distribute という setuptools のブランチが作成されていた。 少し古いページでは distribute のインストールが勧められていることも多い。 しかし、2013年に distribute は setuptools にマージされた ので今後は distribute を使う必要はないと思われる。
distutils を拡張するライブラリと easy_install というモジュールのインストールを行う補助コマンドのセット。 更新が停止していたので、代替として distribute が開発されていたが distribute は2013年にマージされたので、今後はsetuptools を使えば良い。
ez_setup.py というブートストラップ用のスクリプトをダウンロードし実行する。:
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py
前述の User site directory にインストールする場合には、:
python ez_setup.py --user
を実行する。 Mac の Python には始めから入っているような気がする。:
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools
簡単に PyPI や指定されたURLにあるアーカイブからモジュールのインストールが行えるコマンド。 setuptools に付随している。パッケージを自作しないユーザが setuptols を入れる直接的な理由のほとんどはこれをインストールするためであろう。
setuptools で定義された Python の配布形式。 Python のコードやメタ情報その他を所定のフォーマットに従って zip で固めたもの (distutils の生成するzip/tar の拡張版)。 setuptools を使って (つまり setuptools を使って setup.py を定義していれば) 作成することができる。
上述したように、setuptools のインストールに利用されるブートストラップ用のスクリプト。
easy_install の強化版みたいなもの。http://www.pip-installer.org/