当前位置: 首页 > 面试题库 >

是否有创建用于分发Python程序的Debian软件包的标准方法?

白腾
2023-03-14
问题内容

有关如何执行此操作的信息很多,但是由于 “有多种方法可以给猫换皮”
,因此涵盖该过程的所有教程/手册似乎都做出了与其他假设不同的某些假设。教程,我仍然没有设法掌握它。

到目前为止,我认为这是我所理解的。

  1. 我的最终目标应该是创建“二进制” .deb软件包。由于所有Python程序都是这样的,因此此类软件包将独立于平台(32/64位)。
  2. 要创建“二进制”包,我首先需要创建一个源包。
  3. 要创建源包,我可以使用CDBSdebhelper。Debhelper是初学者的推荐方法。
  4. 创建源程序包的核心是DEBIAN在源目录中的目录中填充许多文件,以阐明需要在何处复制文件,它们受什么版权和许可方案,它们具有什么依赖性等。
  5. 如果 Python源代码还附带distutils的脚本, 该步骤#4可在很大程度上自动化该dh_make命令。 __setup.py

现在我的问题是:

  1. 我对流程的理解正确吗? 有什么我想念的东西,或者我弄错了吗?
  2. 步骤5确实让我更困惑:特别是对我来说最模糊的两点是:
    • 如何编写setup.py安装独立程序的脚本? 编辑: 通过 独立的程序, 我指的是节目旨在通过桌面用户使用(而不是一个 模块, 这是我理解的一样功能的集合被其他软件已经被导入后使用)。在我的特定情况下,我实际上需要 两个 这样的“程序”:主软件和单独的实用程序(实际上,另一个“程序”应该与另一个程序放在同一程序包中)。
    • 这种脚本对DEB包有什么特殊性? 官方文档似乎只涉及RPM和Windows内容。

顺便说一句:这些是迄今为止我能找到的最佳信息来源。如果您有什么比这更好的,请分享!:)

  • Ubuntu的Python打包指南
  • 从python setup.py创建一个.deb包(它 显示 了步骤,但是对它们的 解释 不足以使我遵循)
  • ShowMeDo视频,有关“从python程序中创建.deb软件包”(它似乎不是最新的,并且-如果我理解正确的话-将会产生供个人使用的软件包,没有依赖项,也没有签名的changelog等使其与Debian政策不兼容的关键数据)。

问题答案:

看起来stdeb会做您想要的。

此外,对于安装脚本,我强烈建议分发的console_scripts入口点支持。



 类似资料:
  • 问题内容: 例如: 要么 这些名称或破折号有问题吗? 问题答案: 老实说,这取决于个人开发人员和他们自己的感受。就像您建议的那样,有两种同样好的构造CSS类的方法: 它们可以达到相同的目的,但是当您开始广泛思考时,您会发现这些样式之间的差距有多大。 分离班使他们可以重复使用: 该干的惯例是从不重复自己。通过分离or类,我们可以 重用 相同的类: 在第二种方法中-使用分隔符,代码将是: 在像这样的简

  • 问题内容: 是否有Java 的软件包管理器,如Python的easy_install? 我正在寻找可从命令行而不是从IDE使用的解决方案。 问题答案: Maven确实基于可浏览,可搜索的远程 存储库* (如中央 存储库) 提供 依赖项管理 。 * Maven Ant Tasks (已淘汰) 使用Maven的存储库提供依赖项管理以及对Ant构建的更多支持。 Ant Ivy是Maven Ant Tas

  • 问题内容: 我玩过GTK,TK,wxPython,可可,诅咒等游戏。它们非常可怕。GTK/ TK / wx / curses似乎基本上都是适当C库的直接端口,而Cocoa基本上要求同时使用PyObjC和Interface Builder,而我都不喜欢。 用于Ruby的Shoes GUI库非常棒。它的设计非常合理,非常“红”,它从Web开发中借用了一些好用的东西(例如使用十六进制颜色代码或) 如标题

  • 问题内容: 检查Centos / Redhat中安装的软件包列表的Python方式? 在bash脚本中,我将执行以下操作: 问题答案: TransactionSet()将打开RPM数据库 没有参数的dbMatch将设置一个匹配迭代器以遍历整套已安装的软件包,您可以在匹配迭代器上调用next来获取下一个条目,即代表一个软件包的标头对象 dbMatch也可以用于查询特定的程序包,您需要传递标签的名称以

  • 问题内容: 我有一个文件,其中列出了我的虚拟环境所需的软件包。是否有可能找出文件中提到的所有软件包是否都存在。如果缺少某些软件包,如何找出丢失的软件包? 问题答案: 更新 : 进行更新和改进的方法是通过。有关详细信息,请参见下面的Acumenus答案。 原文 : 这样做的pythonic方法是通过 API。要求以setuptools可以理解的格式编写。例如: 示例代码:

  • 问题内容: 有没有一种简单的方法可以列出软件包中所有模块的名称,而无需使用? 例如,给定此程序包: 我想知道是否有标准或内置的方式来做这样的事情: 手动方法是遍历模块搜索路径,以找到包的目录。然后可以列出该目录中的所有文件,过滤出唯一命名为py / pyc / pyo的文件,剥离扩展名,然后返回该列表。但这对于模块导入机制已经在内部完成的工作来说似乎是相当多的工作。该功能在任何地方都可以使用吗?