使用distutils和deb在Ubuntu系统中部署Python模块
我正在用distutils将一些库打包到一个deb中 大概,我需要正确配置setup.py,以及相应的deb的使用distutils和deb在Ubuntu系统中部署Python模块,python,distutils,deb,Python,Distutils,Deb,我正在用distutils将一些库打包到一个deb中 大概,我需要正确配置setup.py,以及相应的deb的/debian文件 现在,存储库看起来像这样: library_name/ __init__.py liba.py libb.py ... 它作为一个依赖项添加到其他程序中,以便它们可以从library\u name import liba执行 谷歌搜索揭示了Ubuntu上3到5种不同的部署方法,不包括easy\u install方法;文件似乎大部分是零碎的,已经过时了 我特别
/debian
文件
现在,存储库看起来像这样:
library_name/
__init__.py
liba.py
libb.py
...
它作为一个依赖项添加到其他程序中,以便它们可以从library\u name import liba执行
谷歌搜索揭示了Ubuntu上3到5种不同的部署方法,不包括easy\u install
方法;文件似乎大部分是零碎的,已经过时了
我特别希望确保无论Python版本如何,库都被放置在正确的系统目录中。当然,它也可以无缝地卸载或升级
最终的结果是在本地服务器上添加一个deb,作为我们其他程序的包依赖项
完成此任务的标准“简单明了”方法是什么?您可以使用它快速创建debian文件。据我所知,与其他类似工具(如dh make
)不同,pkgme
设计基于插件,这意味着当检测到python时,将正确提取setup.py
文件中的信息
要了解更多信息,您可以在活动中看到这一点。我以前也曾与Ubuntu/Debian的Python打包作过斗争,我同意,这些文档很混乱/不存在/误导性:它们确实需要一个快速入门指南,以了解最简单的情况
好了,给你
安装您的工具。不过,这可能有点过头了:
sudo apt-get install build-essential python-all dh-make devscripts fakeroot
首先将代码签出到名为$packagename-$version
的目录中,如library\u name-0.6.0/
,然后将cd
签出到该目录中。运行类似于dh_make-i-c gpl3-e的程序nfirvine@example.com
(有关其他选项,请参阅dh_make--help
)。如果一切顺利,您将不会收到任何错误,它将在/debian
中创建大量文件。您可以忽略或删除/debian/*.{ex,ex}
;这些只是例子
您可能应该在某个时候检查所有这些文件,但至少需要编辑/debian/control
和/debian/rules
。您应该以模板形式填写控件中的所有字段,即Description
和Homepage
。将包
行更改为python-$libname
将控件中的依赖项
行更改为:
Depends: ${misc:Depends}, ${python:Depends}
它确保我们的二进制包python-$libname
取决于它所需要的python版本。(${python:Depends}是一个“subsvar”;它们是在我们构建时创建的;您可以在第一次构建之后检查它们的值
使用python2将rules
中的行从dh$@
更改为dh$@--,保留前面的选项卡(它是一个生成文件)。这导致debhelper使用其python2插件;默认情况下仍然使用pysupport(记住,pysupport已被弃用)
然后,在源根目录中运行以下命令:
debuild -us -uc
这将生成包,而无需对其进行签名(这是您以后应该学习的!)。您应该会看到一些熟悉的setuptools行(两次:一次用于2.6,一次用于2.7)、成堆的dh_u插件和其他建筑垃圾。最后是林寻的输出,可以检测一些常见的包装问题;你应该把这些修好。林寻和朋友们抱怨的很多东西都只是遵守了包装规则,如果你的lib只是内部的,那就随便玩玩吧
顺便问一下,您的软件包是否与2.x和3.x兼容?也就是说,你的目标是两者吗?