pip-toolsでrequirements.txtのパッケージバージョン番号を管理しよう

  • 47
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Pythonistaのみなさん、requirements.txtに書かれたパッケージのバージョンアップはどうしていますか?
定期的にPyPIの検索窓にパッケージ名をコピペしてバージョン番号を調べる、なんてことしていませんか?
pip-toolsならもっと楽に管理できます!

インストール方法

pip(>=6.1)で以下のようにインストールできます。

pip install pip-tools

pip-compileコマンドの使い方

requirements.inというファイルに、インストールしたいパッケージ名を書いてください。書き方はrequirements.txtと同じです。

requirements.in
Django
easy-thumbnails
Fabric

そして、以下のコマンドを実行すると、実行時の最新バージョン番号を指定した requirements.txt が生成されます。

pip-compile requirements.in

依存関係にあるパッケージも調べて書き出してくれます。
また、「このバージョン以上の最新」や「このバージョンの範囲で最新」という指定をしたい場合は以下のように書けます。
(これもrequirements.txtの書き方と同じですね)

requirements.in
Django>=1.8.0,<1.9.0
easy-thumbnails>=2.2
Fabric>=1.8.0,<2.0.0

pip-syncコマンドの使い方

pip install -r requirements.txtの代わりに使えるコマンドです。
以下のコマンドでrequirements.txtに書かれたパッケージをインストールします。

pip-sync

普通のpip installと違って、以前インストールしていたけど使わなくなったパッケージをアンインストールしてくれます。

こんな使い方も便利かも

pip-compileには--dry-runオプションがあるので、requirements.txtを更新する前に、こんな風に以前生成した内容との違いを比較することができます。

pip-compile --dry-run requirements.in | diff requirements.txt -

これをCIやcronジョブで実行して、パッケージのバージョンアップが必要になったら自動通知されるようにしておくと、幸せになれるかもしれません。