我正在使用 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文件。我想念什么吗?
答案 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
希望这会有所帮助。