来自setup.py的dh_python2版本化依赖项

问题描述 投票:0回答:1

我正在使用dpkg-buildpackage构建一个包含python模块的.deb包。在setup.py中我指定了install_requires=['othermodule>=2.0']但生成的控制文件没有指定版本。 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文件。我错过了什么吗???

python version setup.py deb install-requires
1个回答
0
投票

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

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.