当前位置: 首页 > 知识库问答 >
问题:

如何制作包含多个python包的debian包

平庆
2023-03-14

我想创建一个debian包,当安装时,它将用pip安装几个python包。我能想到两种方法:

>

  • 将python包安装到一个目录中,然后从该目录生成一个debian包。但这会混淆构建主机(例如其pip元数据),尤其是在主机已经安装了其中一些包的情况下。

    用所有python包制作一个debian包,在debian安装和卸载过程中,运行一些脚本来安装/卸载python包。但是这将需要另外两个脚本来维护,以及在安装的机器中放置所有python包的地方。

    还有其他解决方案吗?解决这个问题的最佳方法是什么?

  • 共有2个答案

    乐正浩博
    2023-03-14

    如果您想创建一个依赖于python的元包-

    pip是一个很好的工具,但是如果你安装了一个python包,那么你可以打破依赖关系,这个python包可能是apt在你的元包之后安装的另一个包所需要的。apt是你的朋友。你应该小心。为了克服这个问题,我的建议是在元包的控制文件的提供的中添加适当的包名,冲突替换字段,无论您是通过pip动态安装python包还是将它们捆绑到主包中。我很快搜索了“将多个debian包捆绑到一个包中”,但没有找到解决方案。

    如果您想将python包与系统范围的python包完全分离,我知道virtualenv是最好的选择。如果您想使用pip构建符合debian标准的软件包,stdeb可以轻松做到这一点。

    此外,据我所知,我在KaliLinux(基于Debian)中看到一些包在安装或启动期间动态安装python包,但是Debian策略可能不允许这种灵活性不打破依赖关系(如果你想构建一个官方套餐)。我希望这个答案能指引你走向正确的方向。

    东郭弘
    2023-03-14

    在我看来,如果你想创建一个debian包,你应该避免引用外部分发系统。这里有关于在debian下创建python包的指导方针。

    编辑:对不起,我现在看到关于Python打包的DebianWiki页面可能已经过时了。你可以读到:

    • pybuild的指南
    • 最终关于构建包的python页面
     类似资料:
    • 我是Python的大一新生,我有一个问题是如何在python中绘制直方图。 首先,我有十个间隔,根据花的花瓣长度平均划分,从最小到最大。因此,我可以根据花瓣将花分成十个间隔。 花的种类是三个,所以我想画一个直方图来描述不同种类的花在不同间隔(箱)中的分布。在同一个垃圾桶里,不同的花有不同的颜色。 我知道Matplotlib中的函数,但是我不知道如何使用它来绘制像下面这样的图片。 数据是和

    • 问题内容: 我正在学习加入班级的课程,但是我没有完全掌握其中的一些概念。有人可以解释具有多个联接的语句如何工作吗? 我相信我知道BOOKS表是连接BOOKS和ORDERITEMS的第一个外部联接中的左表。即使没有书的ORDERITEM,也会显示所有的BOOKS。第一次加入后,我不确定真正发生了什么。 当ORDERS加入时,哪个是左表,哪个是右表?客户也一样。这是我迷路的地方。 问题答案: 执行者将

    • 问题内容: 我需要编写或查找脚本,以使用package从Python软件包创建Debian软件包。Python软件包将是不带C扩展的纯Python。 用于测试目的的Python软件包将只是一个包含空文件和单个Python模块的目录。 包装脚本 必须 用于为目标平台上可能的多次Python安装提供正确的字节码,例如,在Ubuntu 9.04 (Jaunty Jackalope)上安装v2.5和v2.

    • 尝试转换多个时。使用py2exe将文件复制到exe文件中我得到错误:回溯(最近一次调用上次):文件“ParentWindow.py”,第7行,in 提到的“FileAnalysers1”是包含. py脚本的python包。如何在exe中包含整个包?

    • 问题内容: 我正在尝试在Hadoop流作业中包括一个python软件包(NLTK),但不确定如何通过CLI参数“ -file”手动不包括每个文件来执行此操作。 编辑:一种解决方案是在所有从站上安装此软件包,但是我目前没有该选项。 问题答案: 我会将软件包压缩为a或a,然后将整个tarball或归档文件作为选项传递给hadoop命令。过去我是用Perl做到的,而Python却没有。 也就是说,如果你

    • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达