pip-toolsが大きくバージョンアップし、 pip-compile
および pip-sync
コマンドを組み合わせた依存管理が行えるようになった。
pip-toolsの細かな使い方は、最後に参考情報をまとめることにして、pip-toolsを利用すると、現在リポジトリ内で宣言している依存パッケージが古くなっているかどうか、次のように調べられる。
$ pip-compile --dry-run requirements.in | diff -u requirements.txt -
pip-toolsでの管理に移行しておらずトラディショナルな pip freeze -l
した内容で依存パッケージを宣言している場合は、次のように比較が可能である。
$ pip-compile --dry-run --no-header --no-annotate requirements.in | diff -u requirements.txt -
いずれの比較方法にせよTravis CIのようなCI as a Serviceでのビルドログに上記コマンドの結果を記録しておくと、古くなったパッケージが検知できて便利である。
ところが2015-10-11現在、Travis CIのPythonプラットフォームでビルドを実行するコンテナ内では pip-compile
に必要な要件 pip==6.1 or higher
を満たしておらず、pipのバージョンが古いためにビルドが必ず失敗してしまう。
これを解決するには、before_script
のフックでpipを最新にアップグレードしてしまえば良い。
language: python
python:
- "2.7"
install:
- pip install -r requirements.txt
before_script:
- pip install -U pip
- pip-compile --dry-run requirements.in | diff -u requirements.txt -
script:
(テストスクリプトの実行)
やや強引な方法だが、Travis CI側のpipデフォルトバージョンが上がるまでのワークアラウンドなので、不要になったら消せば問題ないと思われる。
pip-toolsに関しては、次のページを参考にした。この管理方法が主流になって行くか現時点では分からないが、CIと組み合わせ易い点は便利である。