Python: プロジェクト別に依存モジュールの管理

requirements.txtのみで管理するのは複雑すぎて無理。 pip-toolsを使って楽に管理しよう。

pip-tools

インストール

$ pip install --upgrade pip
$ pip install pip-tools

pip-compile

requirements.inにプロジェクトに使用するモジュールのリストを作る:

gensim==0.9.1
numpy
scipy
falcon
gunicorn

次のようにコマンドを実行すると、依存モジュールのリストrequirements.txtが作成される:

$ pip-compile requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
#    pip-compile --output-file requirements.txt requirements.in
#
falcon==1.0.0
gensim==0.9.1
gunicorn==19.6.0
numpy==1.11.1
python-mimeparse==1.5.2   # via falcon
scipy==0.18.0
six==1.4.1                # via falcon

pip-sync

requirements.txtに書いてあるとおりに、依存モジュールを環境にインストール・アップグレード・アンインストールする。 npm installbundle installのようなもの。

開発用モジュールを分けて管理しているときは同時に指定する:

$ pip-sync dev-requirements.txt requirements.txt