Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用distutils和deb在Ubuntu系统中部署Python模块_Python_Distutils_Deb - Fatal编程技术网

使用distutils和deb在Ubuntu系统中部署Python模块

使用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方法;文件似乎大部分是零碎的,已经过时了 我特别

我正在用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
方法;文件似乎大部分是零碎的,已经过时了

我特别希望确保无论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兼容?也就是说,你的目标是两者吗?