Help us understand the problem. What is going on with this article?

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

More than 3 years have 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ジョブで実行して、パッケージのバージョンアップが必要になったら自動通知されるようにしておくと、幸せになれるかもしれません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away