【问题标题】:dh_python2 versioned dependencies from setup.py来自 setup.py 的 dh_python2 版本化依赖项
【发布时间】:2019-06-29 19:16:29
【问题描述】:

我正在使用 dpkg-buildpackage 构建 python 模块的 .deb 包。 在 setup.py 我指定了install_requires=['othermodule>=2.0'] 但是生成的 control 文件没有指定版本。 Depends: python (>= 2.7), othermodule, dh_python 正在根据 setup.py 文件猜测需求。但是dh_python2 的联机帮助页指出

(默认忽略版本要求)

但我无法将版本包含在控制文件中。 问题是如果没有包含的版本 .deb 包被安装但随后启动我得到的程序:

pkg_resources.DistributionNotFound: The 'othermodule>=2.0' distribution was not found and is required by ...

因为安装的版本低于2.0

我希望能够只指定一次依赖版本(例如在 setup.py 中)

[编辑:]

我在 pydist.py 中看到函数 load() 在绝对路径中搜索:

def load(dname='/usr/share/python/dist/', fname='debian/pydist-overrides',
         fbname='/usr/share/python/dist_fallback'):

而不是在我的包结构所在的 ./debian 下。由于该软件包尚未安装(我正在构建它),因此找不到 pydist 文件。我错过了什么吗???

【问题讨论】:

  • 尝试使用 debian 文件夹中的 pydist 文件:OthermoduleName python-othermodule; PEP386 但没有结果

标签: python version setup.py deb install-requires


【解决方案1】:

Pybuild wiki中所述:

dh_python2 和 dh_python3 会正确填写安装依赖(分别通过 ${python:Depends} 和 ${python3:Depends})

因此,如果您将在 debian/control 中使用 ${python:Depends},dh_python 将尝试将您的 install_requiressetup.py 映射到实际的 deb 依赖项。像这样使用它:

Depends: python (>= 2.7), ${misc:Depends}, ${python:Depends}

您也可以像在 python 中那样在 debian/control 中为 othermodule 指定所需的版本:

Depends: python (>= 2.7), othermodule (>=2.0)

[编辑]

您可以在 debian 文件夹下放置一个 pydist-overrides 文件,该文件利用 PEP386 来强制 dh_python 在解析安装依赖项时包含版本信息。它使用与 .pydist 文件相同的语法:

OthermoduleName python-othermodule; PEP386

希望这会有所帮助。

【讨论】:

  • 实际上我有这行:Depends: python (>= 2.7), ${misc:Depends}, ${python:Depends} 但问题是它没有从 install_requires 转换版本。我可以在 control 文件中明确指定,但只想指定一个要求(在其中一个文件中)
  • 似乎在 pydist 文件中具有 PEP386 标志是我发现使 dh_python2 转换依赖版本的唯一方法。问题正如我在问题中提到的那样,它在 python 安装路径中查找该文件,而不是在我构建包并从中运行 dh_python 的源代码树中
  • 您是否尝试过使用pydist-overrides 文件而不是python-foo.pydist 文件?它使用与 pydist 文件相同的语法:OthermoduleName python-othermodule; PEP386
  • 你去!它就像一个魅力:) 伙计,我花了很多时间来调整这个。祝福你的心!我可以将您的评论转换为答案吗?
  • 我将编辑当前答案以包含此信息,以便您可以将其标记为已接受的答案。这样可以吗?
猜你喜欢
  • 1970-01-01
  • 2015-07-04
  • 2015-11-22
  • 1970-01-01
  • 2012-04-29
  • 2019-12-25
  • 2015-01-10
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多