python 2とpython 3.の両方で機能するモジュールがあります。Python<3.2では、依存関係として特定のパッケージをインストールしたいと思います。Pythonの場合3.2以上。
何かのようなもの:
install_requires=[
"threadpool >= 1.2.7 if python_version < 3.2.0",
],
どうやってそれを作ることができますか?
setuptools
は 環境マーカー を使用してこれをサポートしています。
install_requires=[
'enum34;python_version<"3.4"',
'pywin32 >= 1.0;platform_system=="Windows"'
]
これの使用法は 公式ドキュメント で詳しく説明されています。 変更ログ に基づいて、v20.5で追加されましたが、実装はv20.8.1(15日間のギャップでした)まで安定していませんでした。
元の回答(まだ有効ですが、将来廃止される可能性があります):
setuptools
は、extras_require
引数内での使用をサポートしています。
形式は次のとおりです。
extras_require={ ':python_version=="2.7"': ["mock"], },
他の比較演算子をサポートします。
悲しいことに、それは documentation で言及されていません。答えを探していると、 PEP-426 が「環境マーカー」について話しているのが見つかりました。そのフレーズを使用して、次のコメントで setuptools ticket を見つけることができました。
依存関係を選択的かつ宣言的に要求するために、マーカー機能を正常に使用しました。例は backports.unittest_mock を参照してください。 「エクストラ」を通じてモックが必要になりますが、Python 2の場合のみです。Setuptools17.1を信頼できる場合は、その依存関係をpython_version < "3.3"
に変更できます。
これについては説明しました こちら 、_setup.py
_を使用して_sys.version_info
_内のPythonバージョンをテストすることをお勧めします。
_import sys
if sys.version_info >= (3,2):
install_requires = ["threadpool >= 1.2.7"]
else:
install_requires = ["threadpool >= 1.2.3"]
setup(..., install_requires=install_requires)
_