1. ホーム
  2. python

[解決済み] setuptools setup.py ファイルの install_requires kwarg 用の requirements.txt を参照する。

2022-03-14 18:30:05

質問

私は requirements.txt ファイルをTravis-CIで使用しています。 の両方に要件を重複させるのは馬鹿げているように思えます。 requirements.txtsetup.py にファイルハンドルを渡したいと思っていました。 install_requires のkwargは setuptools.setup .

これは可能なのでしょうか?もしそうなら、どのようにすればよいのでしょうか?

以下は私の requirements.txt ファイルを作成します。

guessit>=0.5.2
tvdb_api>=1.8.2
hachoir-metadata>=1.3.3
hachoir-core>=1.3.3
hachoir-parser>=1.3.4

解決方法は?

これを反転させ、依存関係のリストを setup.py で、1文字(ドット)の . - で requirements.txt の代わりに


また、推奨されていないとはいえ、このような場合は requirements.txt ファイル (URLで外部要件を参照しない場合) を次のようにハックします (テストは pip 9.0.1 ):

install_reqs = parse_requirements('requirements.txt', session='hack')

これは 環境マーカ とはいえ


古いバージョンのpipで、より具体的には 6.0より古い を実現するための公開APIがあります。要件ファイルには、コメント ( # )、他のファイルを含めることができます ( --requirement または -r ). したがって、もしあなたが本当に requirements.txt を使えば、pipパーサーを使うことができます。

from pip.req import parse_requirements

# parse_requirements() returns generator of pip.req.InstallRequirement objects
install_reqs = parse_requirements(<requirements_path>)

# reqs is a list of requirement
# e.g. ['django==1.5.1', 'mezzanine==1.4.6']
reqs = [str(ir.req) for ir in install_reqs]

setup(
    ...
    install_requires=reqs
)