Github: https://github.com/jazzband/pip-tools
pip-tools = pip-compile + pip-sync
pip
ベースのパッケージを固定しているときでも、 pip
ベースのパッケージを新鮮に保つのに役立つ一連のコマンドラインツール。 あなたはそれらをピン止めしますよね?
インストール
Pythonプロジェクトの環境ツール( pip
似ていpip
)の一環として、各プロジェクトの仮想環境に pip-tools
をインストールすることをお勧めします 。
$ source /path/to/venv/bin/activate
(venv)$ pip install pip-tools
注 :残りのすべてのコマンド例は、プロジェクトの仮想環境を有効にしたことを前提としています。
pip-compile
使用例
setup.py
要件
あなたがFlaskプロジェクトを持っていて、それを生産のためにピン止めしたいとします。 install_requires=['Flask']
を持つsetup.py
をお持ちの場合は、引数なしでpip-compile
を実行してください:
$ pip-compile
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --output-file requirements.txt setup.py
#
click==6.7 # via flask
flask==0.12.2
itsdangerous==0.24 # via flask
jinja2==2.9.6 # via flask
markupsafe==1.0 # via jinja2
werkzeug==0.12.2 # via flask
pip-compile
は、すべてのFlask依存関係(およびすべての基本依存関係)が固定されたrequirements.txt
を生成します。 requirements.txt
をバージョン管理下に置くべきです。
setup.py
なし
setup.py
使用しない場合( 簡単に書くことができます)、Flaskの依存関係を宣言するためのrequirements.in
ファイルを作成することができます:
# requirements.in
Flask
今度は、 pip-compile requirements.in
実行してください:
$ pip-compile requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --output-file requirements.txt requirements.in
#
click==6.7 # via flask
flask==0.12.2
itsdangerous==0.24 # via flask
jinja2==2.9.6 # via flask
markupsafe==1.0 # via jinja2
werkzeug==0.12.2 # via flask
そして、それはあなたのrequirements.txt
を生成し、すべてのFlask依存関係(およびすべての基礎となる依存関係)が固定されます。 requirements.in
とrequirements.txt
両方をバージョン管理下に置くrequirements.in
ありrequirements.txt
。
ハッシュの使用
バージョン8.0からpip
利用可能なハッシュチェックモードを使用したい場合、 pip-compile
は--generate-hashes
フラグを提供します:
$ pip-compile --generate-hashes requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --generate-hashes --output-file requirements.txt requirements.in
#
click==6.7 \
--hash=sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d \
--hash=sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b \
# via flask
flask==0.12.2 \
--hash=sha256:0749df235e3ff61ac108f69ac178c9770caeaccad2509cb762ce1f65570a8856 \
--hash=sha256:49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1
itsdangerous==0.24 \
--hash=sha256:cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519 \
# via flask
jinja2==2.9.6 \
--hash=sha256:2231bace0dfd8d2bf1e5d7e41239c06c9e0ded46e70cc1094a0aa64b0afeb054 \
--hash=sha256:ddaa01a212cd6d641401cb01b605f4a4d9f37bfc93043d7f760ec70fb99ff9ff \
# via flask
markupsafe==1.0 \
--hash=sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665 \
# via jinja2
werkzeug==0.12.2 \
--hash=sha256:903a7b87b74635244548b30d30db4c8947fe64c5198f58899ddcd3a13c23bb26 \
--hash=sha256:e8549c143af3ce6559699a01e26fa4174f4c591dbee0a499f3cd4c3781cdec3d \
# via flask
要件の更新
すべてのパッケージを更新するには、 pip-compile --upgrade
定期的に再実行pip-compile --upgrade
。
特定のパッケージを最新バージョンまたは特定のバージョンに更新するには、 – --upgrade-package
または-P
フラグを使用し--upgrade-package
。
$ pip-compile --upgrade-package flask # only update the flask package
$ pip-compile --upgrade-package flask --upgrade-package requests # update both the flask and requests packages
$ pip-compile -P flask -P requests # same as above, but shorter
複数のPythonバージョンを使用している場合、 py -XY -m piptools compile ...
としてpip-compile
ことができます。WindowsではpythonX.Y -m piptools compile ...
します。他のシステムではpythonX.Y -m piptools compile ...
します。
構成
pip-compile
コマンドを別のスクリプトでラップしているかもしれません。 カスタムスクリプトのコンシューマを混乱させないために、 CUSTOM_COMPILE_COMMAND
環境変数を設定して、要件ファイルの先頭に生成された更新コマンドを上書きできます。
$ CUSTOM_COMPILE_COMMAND="./pipcompilewrapper" pip-compile requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
# ./pipcompilewrapper
#
flask==0.10.1
itsdangerous==0.24 # via flask
jinja2==2.7.3 # via flask
markupsafe==0.23 # via jinja2
werkzeug==0.10.4 # via flask
pip-sync
使用例
requirements.txt
がpip-sync
ので、 pip-sync
を使用して仮想環境を更新し、そこにある内容を正確に反映させることができます。 これは、 requirements.txt
内容に一致するために必要なものすべてをインストール/アップグレード/アンインストールします。
注意 : pip-sync
は、 pip-compile
によって生成されたrequirements.txt
のみ使用されpip-compile
。
$ pip-sync
Uninstalling flake8-2.4.1:
Successfully uninstalled flake8-2.4.1
Collecting click==4.1
Downloading click-4.1-py2.py3-none-any.whl (62kB)
100% |████████████████████████████████| 65kB 1.8MB/s
Found existing installation: click 4.0
Uninstalling click-4.0:
Successfully uninstalled click-4.0
Successfully installed click-4.1
複数の*.txt
依存関係リストを同期するには、コマンドライン引数を使用してそれらを渡します。
$ pip-sync dev-requirements.txt requirements.txt
空の引数を渡すと、デフォルトのrequirements.txt
。
複数のPythonバージョンを使用している場合は、 py -XY -m piptools sync ...
とWindowsでpythonX.Y -m piptools sync ...
ようにpip-sync
を実行できます。
注 : pip-sync
は、 setuptools
、 pip
、 pip-tools
などのパッケージツールをアップグレードまたはアンインストールしません。 これらのパッケージをアップグレードするには、 pip install --upgrade
を使用してください。
pip
についての注意
v2.0.0以降、pip-toolsはコードベースでpip v9.0.3
しています。 これはpip v10.0.0
を使用しているユーザーのためにpip-tools
するために行われました。 pip-sync
コマンドだけがvirtualenv
で見つかったpip
使用し、 pip-sync
によってshell- virtualenv
として発行されたpip install
コマンドとpip uninstall
コマンドに対してのみpip uninstall
ます。
その他の便利なツール
- pipdeptreeを実行すると、インストールされているパッケージの依存関係ツリーが表示されます。