10

我正在通过 gobject 内省打包一个依赖于几个 C 库的 python 应用程序。我想确保至少安装了 glib 中的 python 模块(即 gi 模块,在 Debian 中打包为 python-gi,我不是在谈论已弃用的 PyGObject 模块)。将其添加为常规依赖项会使安装失败,因为它不在 Pypi 中。

我应该如何声明?我查看了一个 setuptool 文档,但我没有看到任何东西可以解决问题。

谢谢。

相关问题:

4

1 回答 1

3

您不能使用setuptools(AFAIK,即...)指定非 Python 依赖项。

install_requires关键字 tosetuptools.setup只能指定 Python 样式的依赖项;它针对 Python 打包基础设施。Python 风格的安装程序(pipeasy_installpython setup.py install)将使用仅查找和解析 Python 风格的包的策略来解决此类依赖关系。其中一种策略是使用像 PyPI 这样的包索引。

如果您想使用 Debian 软件包存储库创建一个具有 Debian 风格的依赖项的软件包,这些依赖项由 Debian 风格的安装程序解决,您必须创建一个 Debian 软件包。有一些工具支持从 Python 项目创建 Debian 包,例如easydebstdeb。然而,大多数人建议加倍努力并明确地创建一个 Debian 软件包。

在一般情况下,通过 PyPI 打包和分发 Python 项目应该是可行的方法。它独立于平台和发行版,并且可以很好地与 Python 特定的安装程序(如pip )和工具(如virtualenvbuildout )配合使用。对 PyGI 的依赖将涉及向用户记录事实,例如pydbus 包在其 README 中所做的:

它基于 PyGI,即 Python GObject Introspection 绑定,这是从 Python 中使用 GLib 的推荐方式。不幸的是,PyGI 没有打包在 pypi 上,因此您需要从您的发行版的存储库(通常称为 python-gi、python-gobject 或 pygobject3)中安装它。

从 PyGI 导入时,您的项目也可能是防御性的,当导入失败时,会向用户显示可理解的错误消息,例如“请 sudo apt-get install python-gi”等。

于 2015-03-16T22:15:27.130 回答