我正在尝试使用六个将python2包移植到python3(不是我自己的),以便它与两者兼容.但是,requirements.txt中列出的一个软件包现在包含在python3 stdlib中,而pypi版本在python3中不起作用,所以我想有条件地排除它.在setup.py中这样做很容易,我可以这样做:
if sys.version_info[0] == 2:
requirements += py2_requirements
else:
requirements += py3_requirements
Run Code Online (Sandbox Code Playgroud)
但是我希望requirements.txt能够反映出正确的列表.我在pip文档中找不到任何相关内容.所以有人知道怎么做,或者甚至可能吗?
Jia*_*ang 107
您可以使用环境标志,以实现这一点requirements.txt,因为pip 6.0:
SomeProject==5.4; python_version < '2.7'
SomeProject; sys_platform == 'win32'
Run Code Online (Sandbox Code Playgroud)
它也通过在setup.py以下方面声明额外要求而得到setuptools的支持:
setup(
...
install_requires=[
'six',
'humanize',
],
extras_require={
':python_version == "2.7"': [
'ipaddress',
],
},
)
Run Code Online (Sandbox Code Playgroud)
另请参见需求说明符.
您可以创建多个需求文件,将这些常用包放在一个公共文件中,并将它们包含在另一个pip需求文件中 -r file_path
requirements/
base.txt
python2.txt
python3.txt
Run Code Online (Sandbox Code Playgroud)
python2.txt:
-r base.txt
Django==1.4 #python2 only packages
Run Code Online (Sandbox Code Playgroud)
python3.txt:
-r base.txt
Django==1.5 #python3 only packages
Run Code Online (Sandbox Code Playgroud)
pip install -r requirements/python2.txt
| 归档时间: |
|
| 查看次数: |
23432 次 |
| 最近记录: |