はじめに
プロジェクト毎に必要なパッケージの管理を Python でやるにはどうしたらいいかをまとめた。Ruby の Gem パッケージの管理ツール Bundler と似たような事ができる。MacOSX の Homebrew 環境で作業は行っているが、virtualenv 環境を構築してしまえば Linux 等でも同じはず。
virtualenv 環境の構築
まずは、virtualenv 環境を構築する。こっちのページを参照。
pip について
Python のパッケージ管理ツール。virtualenv 環境を構築すれば自動的にインストール済み。
既にインストールされているpipのバージョン < 1.5の場合、$ pip install -U pipで1.5以上になるように更新しておく。
まず作業したいプロジェクト用の仮想環境を作る。
1
2
| $ mkvirtualenv testenv
$ workon testenv
|
あとは仮想環境下で以下のようなコマンドを実行して、必要なパッケージのインストール、管理を行う。
インストール済みのパッケージを確認
$ pip list で確認できる。
1
2
3
4
5
6
| $ pip list
List (1.3.0)
mecab-python (0.994)
pip (1.5.2)
setuptools (2.1)
...
|
pypi からパッケージを検索
Python Package index(pypi)とは、Python 用のソフトウェアリポジトリ。 Ruby の RubyGems 、Perl の CPAN みたいなもの。
$ pip search SomePackage で SomePackage を検索できる。
例:
1
2
3
4
5
| $ pip search scipy
scipy - SciPy: Scientific Library for Python
scikit-image - Image processing routines for SciPy
scipy-data_fitting - Data fitting system with SciPy.
...
|
インストール
$ pip install PACKAGE_NAME で PACKAGE_NAME を pypi から検索してインストールしてくれる。
例:
1
2
3
| $ pip install SomePackage # 最新 ver
$ pip install SomePackage==1.0.4 # 特定 ver
$ pip install 'SomePackage>=1.0.4' # ある ver 以上
|
開発版のインストール
開発版のパッケージをインストールしたい場合、以下のようにする。デフォルトで検索されるのは安定版のみ。
1
| $ pip install --pre SomePackage
|
ファイルからインストール
手元のファイルやネット上のファイル(圧縮したままでOK)からもインストール可能。
1
2
| $ pip install ./downloads/SomePackage-1.0.4.tar.gz
$ pip install http://my.package.repo/SomePackage-1.0.4.zip
|
リモートリポジトリからインストール
git リポジトリなどから直接パッケージをインストールすることも可能。
1
2
3
4
5
| $ pip install -e git+https://git.repo/some_pkg.git#egg=SomePackage # from git
$ pip install -e hg+https://hg.repo/some_pkg.git#egg=SomePackage # from mercurial
$ pip install -e svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage # from svn
$ pip install -e git+https://git.repo/some_pkg.git@feature#egg=SomePackage # from 'feature' branch
$ pip install -e git+https://git.repo/some_repo.git@egg=subdir&subdirectory=subdir_path # install a python package from a repo subdirectory
|
ローカルミラーからインストール
ローカルのミラーからもインストール可能。
1
2
| $ pip install --index-url http://my.package.repo/simple/ SomePackage # pypi は検索しない
$ pip install --extra-index-url http://my.package.repo/simple SomePackage # pypi も検索
|
proxy 環境下でのインストール
proxy 環境下の場合、
1
| $ pip install SomePackage --proxy=username:passwd@proxy.example.com:8080
|
で proxy を通してインストール可能。
アップグレード
インストール済みのパッケージをアップグレードする場合は以下のコマンドを実行する。
1
| pip install SomePackage -U
|
更新可能なパッケージは
で確認可能。
virtualenv環境の場合、
でシステム(仮想環境ではない場所)にインストールされているものを除外して、
仮想環境上にインストールしたパッケージのみ表示できる。
アンインストール
1
| $ pip uninstall SomePackage
|
で指定したパッケージを削除できる。
freeze
現在インストールしてあるパッケージをテキストファイルに書き出して、後に一括インストールできるようにするためのコマンド。
1
| $ pip freeze > requirements.txt
|
で書き出す。インストールする際は、
1
| $ pip install -r requirements.txt
|
でインストール可能。
1
| $ pip install -r requirements1.txt requirements2.txt
|
のように複数個のファイルも指定可能。
また、freezeで書きだしたファイルをまとめて削除することも可能。
1
| $ pip uninstall -r requirements.txt
|
依存パッケージを1つのzipにまとめる
書き出し。
1
2
| $ pip freeze > requirements.txt
$ pip bundle -r requirements.txt test.pybundle
|
別の環境でインストール。
1
| $ pip install test.pybundle
|
参考文献等
pip 1.5.2 documentation
pipの使い方 (2014/1バージョン), そこはかとなく書くよん。