我有一个需要Python 2.4或更高版本的Python 2项目(“foo 0.1.7”)。

现在,我以仍然与Python 2兼容的方式将其移植到Python 3('foo 0.2.0'),但现在的要求已提升到Python 2.6或更高版本。

  • 我知道setup.py有一个--target-version=2.6选项,可以与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')
    

    但我希望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的更新库替换setuptoolspackaging等。这个新库结合了现有distutils增强库的功能以及许多其他改进。它计划包含在Python 3.3中,然后反向移植为distutils2

    与您的问题特别相关的是,它对设置元数据进行了许多增强。包括"requires_python"选项,该选项似乎是量身定制的,用于确切指示您想要的信息。但是,我不确定他们打算如何利用这些信息,以及是否会导致新的设置系统像您想要的那样运行。

    我建议发布到致力于新系统开发的Google小组the fellowship of the packaging上,他们将能够提供有关requires_python应该如何工作的详细信息...并可能在底层获得您想要的安装行为似乎可行(并且还不存在)的新系统。

    关于python - 分发需要最低Python版本的Python软件包的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7634298/

    10-14 17:38
    查看更多