dh_python2 来自 setup.py 的版本化依赖项
dh_python2 versioned dependencies from setup.py
我正在使用 dpkg-buildpackage 构建 python 模块的 .deb 包。
在 setup.py 中我指定了 install_requires=['othermodule>=2.0']
但是生成的control文件没有指定版本。 Depends: python (>= 2.7), othermodule,
dh_python 是根据 setup.py 文件猜测要求。但是 dh_python2 的联机帮助页指出
(version requirements are ignored by default)
但我无法设法将版本包含在控制文件中。
问题是没有包含版本的 .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 文件。我错过了什么吗???
如 Pybuild wiki 中所述:
dh_python2 and dh_python3 will correctly fill in the installation dependencies (via ${python:Depends} and ${python3:Depends} respectively)
因此,如果您将在 debian/control 中使用 ${python:Depends}
,dh_python 将尝试将您的 install_requires
从 setup.py
映射到实际的 deb 依赖项。像这样使用它:
Depends: python (>= 2.7), ${misc:Depends}, ${python:Depends}
您还可以在 debian/control 中为您的 othermodule
指定所需的版本,就像您为 python 所做的那样:
Depends: python (>= 2.7), othermodule (>=2.0)
[编辑]
您可以在 debian 文件夹下放置一个 pydist-overrides
文件,利用 PEP386
强制 dh_python 在解析安装依赖项时包含版本信息。它使用与 .pydist 文件相同的语法:
OthermoduleName python-othermodule; PEP386
希望这对您有所帮助。
我正在使用 dpkg-buildpackage 构建 python 模块的 .deb 包。
在 setup.py 中我指定了 install_requires=['othermodule>=2.0']
但是生成的control文件没有指定版本。 Depends: python (>= 2.7), othermodule,
dh_python 是根据 setup.py 文件猜测要求。但是 dh_python2 的联机帮助页指出
(version requirements are ignored by default)
但我无法设法将版本包含在控制文件中。 问题是没有包含版本的 .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 文件。我错过了什么吗???
如 Pybuild wiki 中所述:
dh_python2 and dh_python3 will correctly fill in the installation dependencies (via ${python:Depends} and ${python3:Depends} respectively)
因此,如果您将在 debian/control 中使用 ${python:Depends}
,dh_python 将尝试将您的 install_requires
从 setup.py
映射到实际的 deb 依赖项。像这样使用它:
Depends: python (>= 2.7), ${misc:Depends}, ${python:Depends}
您还可以在 debian/control 中为您的 othermodule
指定所需的版本,就像您为 python 所做的那样:
Depends: python (>= 2.7), othermodule (>=2.0)
[编辑]
您可以在 debian 文件夹下放置一个 pydist-overrides
文件,利用 PEP386
强制 dh_python 在解析安装依赖项时包含版本信息。它使用与 .pydist 文件相同的语法:
OthermoduleName python-othermodule; PEP386
希望这对您有所帮助。