106

両方と互換性があるように、6を使用してpython2パッケージをpython3(自分のものではない)に移植しようとしています。ただし、requirements.txt にリストされているパッケージの 1 つが python3 stdlib に含まれるようになり、pypi バージョンは python3 で動作しないため、条件付きで除外したいと考えています。setup.py でこれを行うのは簡単です。次のようにするだけです。

if sys.version_info[0] == 2:
    requirements += py2_requirements
else:
    requirements += py3_requirements

しかし、requirements.txt にも正しいリストを反映させたいと思います。これについては、pip ドキュメントで何も見つかりません。誰もそれを行う方法を知っていますか、それが可能かどうかさえ知っていますか?

4

2 に答える 2

173

環境マーカーを使用して、requirements.txt以降でこれを実現できpip 6.0ます。

SomeProject==5.4; python_version < '2.7'
SomeProject; sys_platform == 'win32'

で追加の要件を宣言することにより、setuptools でもサポートされますsetup.py

setup(
    ...
    install_requires=[
        'six',
        'humanize',
    ],
    extras_require={
        ':python_version == "2.7"': [
            'ipaddress',
        ],
    },
)

要件指定子も参照してください。対応するPythonコマンドの文字列バージョンの文字列

于 2015-10-31T11:39:26.730 に答える