捆绑第三方库以便在Python 3中分发的最佳实践

Dew*_*wfy 8 dependencies software-distribution python-3.x

我正在使用Python开发应用程序3.使用第三方库进行开发过程和最终用户分发的最佳实践是什么?请注意,我正在这些约束中工作:

  • 团队中的开发人员应该具有完全相同的库版本.
  • 理想的解决方案适用于Windows和Linux.
  • 我想在使用我们自己的软件之前避免让用户安装软件; 也就是说,在使用我们的产品之前,他们不应该安装产品A和产品B.

die*_*dha 1

没有最佳实践,但人们遵循一些不同的轨道。关于商业产品分销,有以下几种:

管理您自己的包服务器

关于您的开发过程,通常是从本地软件包服务器更新您的开发盒。这允许您“冻结”依赖项列表(即停止获取上游更新),以便每个人都使用相同的版本。您可以在特定时间进行更新,也可以让开发人员进行更新,从而使每个人保持同步。

对于客户安装,您通常会编写安装脚本。您可以收集所有软件包并安装您的库,同时安装其他库。尝试安装新的 Python,甚至任何标准库都可能会出现问题,因为客户可能已经依赖于不同的版本。通常,您可以安装在沙箱中,以将您的软件包与系统软件包分开。这个问题在 Linux 上比 Windows 上更严重。

工具链

另一个选项是为每个支持的操作系统创建一个工具链。工具链是所有依赖项(最多但不包括基本操作系统库,例如glibc)。该工具链被打包并分发给开发人员客户。工具链的最佳实践是:

  • 更改可执行文件以防止混淆。(即 python -> pkg_python)
  • 不要安装在.../bin目录中,以防止意外使用。(即,在 Linux 上,您可以安装在.../libexec. 下/opt,尽管我个人讨厌它。)
  • 将您的库安装在正确的位置,lib/python/site-packages这样您就不必使用 PYTHONPATH。
  • 分发.py可执行文件的源文件,以便安装脚本可以适当地重新定位它们。
  • 软件包格式应该是操作系统本机软件包(RedHat -> RPM、Debian -> DEB、Win -> MSI)