如何在setuptools的setup.py文件中引用install_requires kwarg的require.txt?

问题:

我使用了Travis-CI的requirements.txt文件。在requirements.txtsetup.py中复制要求似乎是愚蠢的,所以我希望通过install_requires install_requires kwarg的文件句柄
这可能吗?如果是这样,我该如何去做呢?
这是我的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

回答:

需求文件可以包含注释(#),并且可以包含一些其他文件(--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
)

 更新:我的答案是旧的。 Pip没有公共API,因此no longer works(例如parse_requirements现在需要pip.download.PipSession的实例)。你可以做相反的事情:列出setup.py中的依赖关系,并在requirements.txt中有一个字符 – 一个点.
 UPDATE2:即使不建议,仍然可以解析requirements.txt不通过URL引用任何外部要求的文件与以下hack(使用pip 9.0.1进行测试):

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

这不会过滤environment markers

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can I reference requirements.txt for the install_requires kwarg in setuptools’ setup.py file?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 9 = 1