3

私はこの問題に何度か遭遇しています。基本的に、仕事では古いバージョンのpython(2.5)をWindowsで使用します。たとえばpip install zope.interface、私のバージョンのpythonでパッケージがサポートされているかどうかに関係なく、pipは常に最新バージョンのパッケージをダウンロードします。したがって、上記の例では4.0.1がダウンロードされますが、そのPKG-INFOではPython 2.5がサポートされているバージョンとしてリストされていないため、インストールエラーが発生します。

  File "C:\Users\jamaam\build\zope.interface\setup.py", line 42
except DistutilsPlatformError as e:

私はpipをよりインテリジェントにし、Pythonバージョン(この例では3.8.0)でサポートされているパッケージの最高バージョンをインストールします。インターウェブを検索しなくても、このパッケージは最新ではないという警告が表示される可能性があります。私の環境にインストール可能なバージョンを手動で見つけるため。

とにかくそうすることはありますか?

明らかにpython2.5をリストしていないPKG-INFOのコンテンツの一部を次に示します。

381 Classifier: Operating System :: OS Independent
382 Classifier: Programming Language :: Python :: 2.6
383 Classifier: Programming Language :: Python :: 2.7
384 Classifier: Programming Language :: Python :: 3
385 Classifier: Programming Language :: Python :: 3.2
386 Classifier: Topic :: Software Development :: Libraries :: Python Modules
4

1 に答える 1

1

いいえ; そのような呼び出しを行うためのメタデータが存在しないためpip、パッケージのどのバージョンがPythonのバージョンで動作するかを判断するために使用できるもの(または他のツール)はありません。

あなたが持っている唯一のオプションは、インストール時にバージョンピンを使用することです:

pip install -I zope.interface==3.8.0

-Iそこにあるスイッチに注意してください。すでに最新バージョンをインストールしようとしているため、ダウングレードを強制するには、インストールされているバージョンを無視する必要がある場合があります。

Trove pythonバージョン分類子(Classifier: Programming Language :: Python :: *)は、このタスクでは信頼できないことに注意してください。開発者がそうすることを覚えている場合は設定しますが、新しいPythonバージョンとの互換性を示すために後で更新することはできません。これらは、インストーラーが使用するメタデータとしてではなく、PyPIおよびその他のパッケージインデックスの検索を絞り込むための方法と見なす必要があります。

于 2012-08-13T08:46:43.637 に答える