我正在尝试使用六个将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文档中找不到任何相关内容.所以有人知道怎么做,或者甚至可能吗?
在发布支持Python 2和3的Python egg时,您是否可以指定根据您使用的版本而更改的依赖项?例如,如果您使用dnspythonPython 2,则会调用Python 3版本dnspython3.
您能否setuptools.setup()以这样的方式编写您的函数:如果这是唯一的障碍,那么您的egg可用于两个版本,即,如果您已经运行2to3以确保库的其余部分与两个版本兼容.
我查看了这些文件,似乎无法找到这个问题的答案:
我有一个依赖的python库importlib.importlib是在Python 2.7的标准库中,但是是旧python的第三方包.我通常将我的依赖项保存在pip样式的requirements.txt中.当然,如果我放在importlib这里,如果安装在2.7上则会失败.只有在标准库中不可用时才能有条件地安装importlib?
在开发用于开发python软件包的virtualenv的过程中,我经常使用“ pip wheel”发行。生成包装所需的所有车轮档案。我通过在setuptools extras_require参数中列出条件依赖项来开始使用它们。是否可以生成特定条件依赖项的车轮档案?
不支持类似“ pip wheel“。[conditional_feature]”的内容。(至少在python-2.7上)请注意,我可以使用以下命令在virtualenv中安装这些依赖项:pip install -e“。[conditional_feature]”