2016-12-23 2 views
2

私は最近、pip does not resolve transitive dependenciesを元気に学びました。これは、パッケージをインストールした後に、その依存関係の一部が実際には満たされないことを意味します。インストール時にPython推移依存性の問題を検出しますか?

インストール後にインストールされたパッケージの依存関係がすべて満たされているかどうかをプログラムでチェックする方法はありますか?

具体的には、virtualenvを作成し、いくつかのパッケージをインストールして、インストールされているすべてのパッケージに実際に必要な依存性があることを確認したいと思います。


編集:ここでははより良い問題を説明するための一例です。パッケージAがパッケージBC(どちらもパッケージDに依存する)に依存し、おそらく異なるバージョンの範囲を持つとします。 Aをインストールするとき、pipはDの指定されたバージョン範囲の1つを任意に選択します。たとえば、BDに依存している可能性がありますが、DCの必須バージョンが満たされないことがあります。私はそのような問題が存在するかどうかを検出したい。

+0

はい、要件ファイルを使用し、バージョン番号を固定します。 –

+0

@BurhanKhalid上記の質問をご覧ください。私は "インストール時にPythonの過渡的な依存関係の問題を検出する"方法を求めています。私は推移的な依存関係の問題を回避する方法を求めていません。特に依存関係を手動で解決することではありません。 – augurar

答えて

0

This answerは、ローカルにインストールされたすべてのパッケージを取得する方法を示しています。 This oneは、特定のパッケージがインストールされていることを確認する方法を示します。パッケージの依存関係も再帰的にチェックされます。これらを組み合わせる:インストールされたパッケージのいずれかが満たされていない要件がある場合

import pip 
import pkg_resources 

pkg_resources.require(str(dep.as_requirement()) 
         for dep in pip.get_installed_distributions()) 

これはResolutionErrorが発生します。

別に

:これは、新しいpip checkコマンドを実行することを意図しているもののようですが、それは、そのようなextras-related issuesとして、上記のスクリプトをキャッチすることを、いくつかの依存関係の問題をキャッチしません。