【问题标题】:Offline python packaging with all required packages in single tar or wheel like, fat jar for java离线 python 打包,所有必需的包都在单个 tar 或轮子中,用于 java 的 fat jar
【发布时间】:2018-11-02 10:19:42
【问题描述】:

我想生成 python tar 或 wheel 文件,其中将包含所有包(依赖项)以及多个依赖项目模块。

我有一个基于 cliff 的 CLI 模块,我们有多个基于 python 的 Swagger SDK。

我想用这个构建一个包,它可以通过简单的pip install build_package.zip 命令离线安装(没有互联网)。

【问题讨论】:

  • 不如改用 Docker 之类的东西?
  • 是的,我正在努力简化安装过程,docker 会是很好的解决方案,但安装 docker 和维护容器对于最终用户来说要困难得多。

标签: python python-3.x openstack packaging swagger-codegen


【解决方案1】:

您可能必须为每个项目(即每个依赖项)构建一个轮子。 然后,按依赖顺序安装(直接安装轮子看this SO question)。

如果您想将所有内容放在同一个存档中,您可以简单地将所有轮子拉上拉链。首先你解压缩它们,最后,一个一个地安装每个轮子(你可以将所有内容嵌入到一个自解压档案中,例如there)。


另一种更贪婪的方法是将所有内容压缩到您的site-packages 中。它位于您安装的 python bin 附近(即 venv/lib/python2.7/site-packages 用于在 python 2.7 中称为 venv 的 virtualenv)。然后你只需要解压目标机器site-packages中的所有内容。

但是,请注意,这假设您用于压缩的机器目标机器具有相同的架构,并且运行相同版本的 python... 此外,存档时必须小心,因为您可能不需要额外的依赖项,例如,如果您安装了其他软件包)。


最后一点,我想您已经考虑过该选项,但是,我建议您重新考虑。在版本处理方面,允许项目在线安装实际上不那么麻烦(即,通过手动执行所有这些操作,您将失去版本管理:pip install --upgrade ...)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 2017-04-06
    • 2019-06-21
    • 2018-06-20
    • 2019-10-10
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多