Python: pipdeptree 構文の概要

一部のパッケージをフォローしていると、バージョンの非互換性が頻繁に発生すると思いますが、バージョン間の依存関係はわかりません。今日はツールを紹介します。pipdeptree
pipdeptree は、インストールされている pip パッケージとその依存関係を表示するために使用される Python パッケージです。パッケージ間の依存関係がツリー構造で表示され、開発者がプロ​​ジェクトの依存関係を理解し​​、管理するのに役立ちます。

インストール:

1. インストール:

pip install pipdeptree コマンドを使用してインストールします。

2. すべての依存関係を表示します。

pipdeptree コマンドを使用して、インストールされているすべてのパッケージとその依存関係を表示します。

3. 特定のパッケージの依存関係を表示します。

pipdeptree -p <package_name> コマンドを使用して、特定のパッケージの依存関係を表示します。

4. どのパッケージが特定のパッケージに依存しているかを確認します。

pipdeptree -r -p <package_name> コマンドを使用して、どのパッケージが特定のパッケージに依存しているかを確認します。

5. 要件ドキュメントを生成します。

pipdeptree --freeze コマンドを使用すると、pip freeze と同様の出力が生成されますが、依存関係情報が含まれます。

例えば:

ここに画像の説明を挿入します

上の図でわかるように、onnx==1...13.0 をインストールしたときに、非互換性の問題が発生しました。tensorboard と protobuf のバージョンには互換性がないことに注意してください。 は、互換性のある tensorboard と protobuf のバージョンを表示します。 tensorboard と onnx の両方で protubuf が高すぎることがわかりますので、この時点で protobuf のバージョンを下げます。 protobuf バージョンをインストールすると、onnx と互換性のある protobuf の範囲が protobuf [required: >=3.20.2,<4, installs: 3.20.3] であることがわかります。したがって、protobuf のスコープを減らすだけでは十分ではありません。この時点で、onnx のバージョンを減らします。 onnx を 1.12.0 に減らすと、protobuf をインストールすると、互換性が失われます。エラーが発生しました。このとき、pipdeptree -p onnx で protobuf が互換範囲内であることがわかります。警告が表示されることがわかります:
ここに画像の説明を挿入します
ここに画像の説明を挿入します

* twisted==23.10.0
 - zope-interface [required: >=5, installed: ?]

上記のプロセスを続けて、まず互換性のあるバージョンのツイストを確認します。実際、この zope.interface はすでにインストールされていますが、なぜツイストがそれを認識できないのかわかりません。改めてTwisted.zope.interfaceと互換性を持たせてみましたが、やはり動作せず、認識されません。
zope.インターフェイス
過去の経験から、Twistedバージョンはおそらく可能性があると感じています新しすぎます。確認したところ、
ここに画像の説明を挿入します
であることが判明したので、Twisted のバージョンを下げてみました。Twisted のバージョンをどのバージョンに下げるべきか疑問があるかもしれません。私の個人的な経験では、< /span> pipdeptree -p が再び変更され、非互換性の警告は表示されないことがわかります。 ご覧のとおり、zope.interface5.5.2 と同じ時期にリリースされたツイスト バージョンは 22.10.0 です。そこで、このバージョンにダウングレードしました。 、ぜひ皆さんも試してみることをお勧めします。たとえば、Twist には zope.interface との互換性の問題が常にありましたが、zope.interface5.5.2 のリリース時期を確認できます。 は、パッケージのリリース時期に関連するバージョンに関連している必要があります。これは私の個人的な経験であり、常にうまく機能しています。互換性の問題がある場合、同様のパッケージをインストールする場合リリース時には、互換性の問題はほとんど発生しません。
ここに画像の説明を挿入します

ここに画像の説明を挿入します

洞察:

パッケージ間に互換性がない場合は、リリース時間が似ているバージョンをインストールすることを強くお勧めし、リリース時間が離れすぎないようにすることを強くお勧めします。これは私が実際に行ってきたことであり、毎回完璧に解決されています。依存パッケージ間のリリース時間が長くなるほど、非互換性の問題が発生する可能性が高くなります。たとえば、上記のTwisted インターフェイスと zope.interface には、リリースから 1 年後に互換性の問題がありました。

おすすめ

転載: blog.csdn.net/s1_0_2_4/article/details/135005251