私はpip
requirements files を使用して、依存関係リストを保持しています。
また、依存関係を管理するためのベストプラクティスに従い、要件ファイル内に正確なパッケージバージョンを提供するようにします。例えば:
Django==1.5.1
lxml==3.0
質問は:Python Package Index requirements.txt
内にリストされているパッケージの場合
この特定の例では、現在利用可能な最新のバージョンは、Djangoおよびlxmlに対してそれぞれ1.6.2および3.3.4です。
pip install --upgrade -r requirements.txt
を試しましたが、すべてが最新であると書かれています:
$ pip install --upgrade -r requirements.txt
Requirement already up-to-date: Django==1.5.1 ...
この時点では、実際のアップグレードを実行したくないことに注意してください-利用可能な更新があるかどうかを確認したいだけです。
Pipにはこの機能が組み込まれています。あなたがvirtualenvタイプの中にいると仮定すると:
$ pip list --outdated
psycopg2 (Current: 2.5.1 Latest: 2.5.2)
requests (Current: 2.2.0 Latest: 2.2.1)
$ pip install -U psycopg2 requests
その後、psycopg2の新しいバージョンとリクエストがダウンロードされ、インストールされます。次に:
$ pip freeze > requirements.txt
これで完了です。これは1つのコマンドではありませんが、外部の依存関係が必要ないという利点があります。
pythonタスク専用のパッケージ- piprot 、次のスローガンを見つけました:
How rotten are your requirements?
以下を使用するのは非常に簡単です。
$ piprot requirements.txt
Django (1.5.1) is 315 days out of date. Latest is 1.6.2
lxml (3.0) is 542 days out of date. Latest is 3.3.4
Your requirements are 857 days out of date
また、「パイプ」することができますpip freeze
からpiprot
コマンドを使用して、サンドボックス/仮想環境にインストールされているパッケージの腐敗度を実際に検査できます。
pip freeze | piprot
それが将来誰かを助けることを願っています。
あなたはベストプラクティスに従うのが好きだと言ったので、私もあなたがvirtualenvを使用していると推測しています、正しいですか?そうであると仮定し、すでに pinning パッケージであるため、 pip-tools というツールがあり、virtualenvに対して実行して更新を確認できます。
欠点がありますが、なぜvirtualenvの使用に言及したのでしょうか。
[ツール] PyPIをチェックし、利用可能な更新を報告します。現在インストールされているパッケージのリストを使用して更新を確認しますrequirements.txtは使用しません
Virtualenvで実行すると、現在のアクティブな環境で利用可能な更新があるパッケージを簡単に確認できます。ただし、virtualenvを使用していない場合は、他のプロジェクトが異なるバージョンに依存している可能性があるため(または、すべてが現在動作している場合でも更新されたバージョンではうまく動作しない可能性があるため)、システムに対して実行するのはおそらく最善ではありません。
提供されているドキュメントから、使用方法は簡単です。 _pip-review
_は、利用可能なアップデートを示しますが、インストールはしません。
_$ pip-review
requests==0.13.4 available (you have 0.13.2)
redis==2.4.13 available (you have 2.4.9)
rq==0.3.2 available (you have 0.3.0)
_
自動的にインストールする場合も、ツールで処理できます:_$ pip-review --auto
_。パッケージを選択的に更新するために使用できる_--interactive
_スイッチもあります。
これがすべて完了すると、_pip-tools
_は、requirements.txtを最新バージョンで更新する方法を提供します:_pip-dump
_。繰り返しますが、これは現在アクティブな環境に対して実行されるため、virtualenv内で使用することをお勧めします。
プロジェクトのインストールは、_pip install pip-tools
_を介して実行できます。
著者注:小さなDjangoプロジェクトにこれを使用し、非常に満足しています。ただし、_pip-tools
_を仮想環境にインストールすると、_pip-dump
_は、requirements.txtファイルに追加されることがわかります。私のプロジェクトは小さいので、常に手動でその行を削除しました。何らかのビルドスクリプトがある場合は、自動的に展開する前に削除します。
Env(仮想または非仮想)で次のような操作を行うだけです:
pip freeze | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'