1. ホーム
  2. python

[解決済み] pythonのバージョンに依存するrequirements.txt

2022-11-10 01:02:24

質問

私は、python2 パッケージを python3 (私自身のものではありません) に six を使って移植し、両者に互換性を持たせようとしています。 しかし、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のドキュメントにはこの件に関するものは見当たりませんので、どなたかその方法、あるいは可能かどうかご存知でしょうか?

どのように解決するのですか?

あなたは 環境マーカ でこれを実現するために 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コマンドの文字列バージョンです。