dh_python2版本来自setup.py

时间:2019-02-05 21:34:38

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

我正在使用 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文件。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

Pybuild wiki中所述:

  

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

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

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

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

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

[ EDIT ]

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

OthermoduleName python-othermodule; PEP386

希望这会有所帮助。