Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
如何制作包含多个python包的debian包_Python_Debian - Fatal编程技术网

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

如何制作包含多个python包的debian包,python,debian,Python,Debian,我想创建一个debian软件包,安装后,它将使用pip安装几个python软件包。我可以想出两种方法: 将python包安装到一个目录中,然后从该目录生成一个debian包。但这会混淆构建主机(例如其pip元数据),尤其是在主机已经安装了其中一些包的情况下 制作一个包含所有python包的debian包,在debian安装和卸载期间,运行一些脚本来安装/卸载python包。但这还需要另外两个脚本来维护,并在安装的机器中放置所有python包 任何其他解决方案以及解决此问题的最佳方法是什么?在我看

我想创建一个debian软件包,安装后,它将使用pip安装几个python软件包。我可以想出两种方法:

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

  • 制作一个包含所有python包的debian包,在debian安装和卸载期间,运行一些脚本来安装/卸载python包。但这还需要另外两个脚本来维护,并在安装的机器中放置所有python包


  • 任何其他解决方案以及解决此问题的最佳方法是什么?

    在我看来,如果要创建debian软件包,应该避免引用外部分发系统。 有一些关于在debian下创建python包的指导原则

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

    • 最终,python页面将介绍

    如果您想在存储库中创建一个依赖于
    python-
    的元包,这很容易,我想您已经知道了。(如果没有,请使用谷歌
    equivs
    package)。我假设您希望安装最新版本的python软件包,或者debian存储库中缺少一些软件包,因此不会使用debian存储库

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

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


    此外,据我记忆所及,我在Kali Linux(基于Debian)中看到一些软件包在安装期间或启动期间动态安装python软件包,但是Debian策略可能不允许这种灵活性,不破坏依赖关系(如果您想要构建正式软件包)。我希望这个答案能指引您正确的方向。

    依赖项是使用Debian控制文件处理的。通过安装维护指南可以找到很多信息,即
    apt get install maint guide
    。如果你这样做的话,软件包系统会处理好一切。我们不能依赖于此,因为互联网不保证,我们希望控制我们安装的确切文件。你不需要互联网来使用软件包。但是如果它们丢失了,例如python matplotlib,您需要提供这方面所需的软件包。我想我以前已经研究过了,我找不到一种方法来指定当pip需要依赖项时它将搜索的本地目录。谢谢!但它似乎只适用于一个debian包中的一个python包?我不知道需要做多少工作来增强它…谢谢!我真正想做的是提供一个debian包来安装我们想要的所有python模块,而不依赖于Internet。我们应该做的最好的事情可能是创建一个VM映像,但我们现在不能…所以,我想到的最后一个想法是使用本地pip服务器,这样在安装预下载的软件包时就不需要互联网了