mar*_*r10 11 python setuptools pypi
我有一个需要Python 2.4或更高版本的Python 2项目('foo 0.1.7').
现在我将它移植到Python 3('foo 0.2.0'),它仍然与Python 2兼容,但现在要求已经提升到Python 2.6或更高版本.
--target-version=2.6setup.py 的选项,可以使用upload,但这似乎不是'2.6或更高'setup命令有一个install_requires选项,但这是针对所需的包,而不是Python解释器.我可以在'foo 0.2.0'的setup.py中做类似的事情:
if sys.hexversion < 0x02060000:
raise RuntimeError('This package requires Python 2.6 or later, try foo 0.1.7')
Run Code Online (Sandbox Code Playgroud)
但我希望easy_install foo能以某种方式解决这个问题.
那么,我应该如何在PyPI上部署它呢?
听起来您正在寻找一种上传程序版本 0.1.7 和 0.2.0 的方法,并且让 easy_install-2.5 自动使用 0.1.7,而 easy_install-2.6 将使用 0.2.0。
如果是这样的话,我不确定是否可以与当前系统一起使用......检查raise RuntimeError()可能是当前可用的最佳选择;安装您的项目的人必须手动easy_install-2.5 -U "proj<0.2"或类似的操作。
也就是说,目前有一个专门的小组正在致力于用名为 的更新库来替换distutils、等。这个新库结合了现有 distutils 增强库的功能以及许多其他改进。它计划包含在 Python 3.3 中,然后作为.setuptoolspackagingdistutils2
与您的问题特别相关的是,它包含对设置元数据的许多增强;包括一个“requires_python”选项,它似乎是量身定制的,可以准确地指示您想要的信息。但是,我不确定他们计划如何利用这些信息,以及它是否会导致新的安装系统表现得像您想要的那样。
我建议发帖到包装联谊会,即致力于开发新系统的谷歌小组,他们将能够提供有关如何requires_python工作的详细信息......并可能获得您想要的安装行为新系统的底层(如果它看起来可行的话)(并且尚未存在)。