我正在打包一个python应用程序,它通过gobject内省依赖于几个C库。我想确保至少安装了glib中的python模块(即gi模块,在Debian中打包为python-gi,我不是在谈论已弃用的PyGObject模块)。将其添加为常规依赖项会导致安装失败,因为它不在Pypi中。
我该如何申报?我看了一下setuptool doc,但是我看不出任何诀窍。
感谢。
相关问题:
答案 0 :(得分:2)
您不能使用setuptools
(AFAIK,即......)指定非Python依赖项。
install_requires
的{{1}}个关键字只能指定Python样式的依赖关系;它针对Python打包基础架构。 Python风格的安装程序( pip , easy_install 或 python setup.py install )将使用查找和解析Python的策略来解决此类依赖关系仅限样式包。其中一个策略是使用像PyPI这样的包索引。
如果你想创建一个具有Debian风格依赖关系的软件包,这些软件包由Debian风格的安装程序解决,使用Debian软件包repos,你必须创建一个Debian软件包。有些工具支持从Python项目创建Debian软件包,例如easydeb和stdeb。但是,大多数人建议超越英里并明确创建Debian软件包。
在一般情况下,通过PyPI打包和分发Python项目应该是可行的方法。它是独立的平台和发行版,可以与特定于Python的安装程序(如 pip )和 virtualenv 或 buildout 等工具很好地配合使用。对PyGI具有依赖性将涉及向用户记录该事实,例如, the pydbus packages在自述文件中执行:
它基于PyGI,Python GObject Introspection绑定,它 是推荐使用Python的GLib的方法。不幸的是,PyGI是 没有打包在pypi上,所以你需要从你的安装它 发行版的存储库(通常称为python-gi,python-gobject或 pygobject3)。
从PyGI导入时,您的项目也可能是防御性的,当导入失败时,会向用户显示一条易消息的错误消息,例如“请sudo apt-get install python-gi”等。