【问题标题】:Can python projects depend on specific versions of python?python项目可以依赖特定版本的python吗?
【发布时间】:2011-12-04 06:08:00
【问题描述】:

我有一个依赖于另一个依赖于 python-dateutil 的项目的 python 项目。当我尝试python setup.py install 我的项目时,它将 dateutil 依赖项解析为 python-dateutil 2.0,这在 python 2.x 上根本不起作用。我发现解决问题并使我的项目可安装的唯一方法是使我的项目直接依赖于python-dateutil<2,即使它根本不直接使用 dateutil 如果它的依赖关系不。

看起来 distutils2 / PEP 345 有一个 Requires-Python 字段来指定项目兼容的 python 版本。

  1. distutils2 是为您的项目指定此信息的唯一方法吗?
  2. pypi 或类似的东西是否能够利用这些信息,所以如果我在 python 2.x 上安装项目,那么依赖解析将忽略 python-dateutil 2?

【问题讨论】:

    标签: python dependencies packaging


    【解决方案1】:

    我在使用python-dateutil 时也遇到过同样的问题。有some discussion of the problem 的作者,但没有真正的解决方案。 version listed on pypi 是 1.5,但 pipeasy_install 都从 pypi 列表中抓取主页以供下载,并获取那里列出的 2.0 版本 (python3)。

    distutils2 中可能有一些东西可以解决它,但这意味着python-dateutil 和您的第 3 方库都必须更新其分发元数据以包含/使用此“Requires-Python”信息。

    我认为你最好的选择是做你已经在做的事情,并确保你的项目直接依赖它。

    【讨论】:

    • 对,解决方法还不错,我只是想知道这个问题是否是 python 打包实践所特有的......
    • 我不这么认为。 python-dateutil 是我见过的唯一一个解决这个问题的包,我使用了大量无缝支持 python 2 和 3 的包(sqlalchemy、jinja2、pip 等)
    猜你喜欢
    • 2011-01-06
    • 2015-04-15
    • 2019-04-18
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多