首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RPM分发python包和模块依赖项

使用RPM分发python包和模块依赖项
EN

Stack Overflow用户
提问于 2013-08-07 17:02:16
回答 1查看 6.6K关注 0票数 13

我有几个python应用程序,由脚本/模块组成,这些脚本/模块应该打包并部署为RPM。

更棘手的一点是,每个应用程序都应该与所有python模块依赖关系一起分发,并且应该优先使用这些应用程序,而不是在系统范围内安装的任何应用程序。

其中一些RPM的目标主机网络访问有限,因此RPM应该包含运行应用程序所需的所有内容,而不是在部署时下载任何内容。

我看过维塔列夫的打包和分发,但是重新定位一个虚拟主机似乎没有很好的支持。

我看过zc.buildout,但发现缺少文档。我可以看到如何在开发期间下载依赖项,但不知道如何将它们作为更大应用程序的一部分分发。可能不同的应用程序需要相同模块的不同版本,因此不应该在系统范围内安装。

另一个痛苦之处是,应用程序中的任何python脚本都需要在开发过程中修改以使用不同的sys.path,而且在部署之后,我看不到明显的解决方法。

对于如何最好地实现这一点,是否有建议?从开发人员的角度来看,理想的工作流摘要如下:

  1. 下载应用程序源
  2. 如果不存在,运行脚本来获取特定的模块依赖项(可能使用pip)
  3. 运行脚本来构建python应用程序,并将它和所有下载的依赖项打包到RPM中。

最后的RPM应该是可安装的,并且可以在没有网络访问的主机上运行,并且只安装了python解释器。

EN

回答 1

Stack Overflow用户

发布于 2013-09-02 12:36:42

我会把它看作是两个不同的问题。

  1. 您希望为您的开发人员提供一个可重复的安装/构建系统。
  2. 你想要一个安装程序建设者。

构建(或者pip,也许与一个额外的脚本相结合)可以解决第一个问题。基本上:“如何在一台新笔记本电脑上为项目的开发做好准备”。理想情况下,您只需说python bootstrap.py;bin/buildout并做好准备(pip/virtualenv也是如此)。

现在您有了一个可重复的构建,您可以使用它作为安装程序的基础。Handiest是一个干净的虚拟机,您可以使用它来实现这个目的。例如,Virtualbox/流浪汉。创建设置virtualbox并在其中安装适当依赖项的脚本。

然后,安装程序构建器脚本可以在virtualbox中对您的项目进行新的签出,并在希望将其放在安装程序中的位置执行可重复的构建操作(例如,/opt/yourproject)。

然后使用FPM来制作实际的包(.deb、.rpm等)。传入FPM选项,这些选项告诉它必需的依赖项,这样您就可以始终确保安装了这些依赖项。(注意:这些是OS级的依赖项,如memcached或postgres;python依赖项应该由pip或buildout处理)。

如果你把你的大问题分成这两个小问题,这两个问题都可以被分开攻击。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18109409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档