我正在使用Python开发应用程序3.将第三方库用于开发过程和最终用户分发的最佳做法是什么?请注意,我正在这些约束中工作:
答案 0 :(得分:3)
您可以使用setuptools为您的库创建egg文件,假设它们已经没有以egg形式提供。然后,您可以将鸡蛋与软件捆绑在一起,这需要安装它们,或者确保它们位于导入路径上。
这有一些复杂性,即如果你的库有C扩展,那么你的蛋就会变成特定于平台的,但根据我的经验,这是最广泛接受的用Python捆绑东西的方法。
我不得不说这仍然是Python的弱点之一;第三方生态系统当然是针对开发人员而非最终用户。
答案 1 :(得分:1)
答案 2 :(得分:1)
没有最佳做法,但人们会关注一些不同的曲目。关于商业产品分销,有以下内容:
管理您自己的软件包服务器
关于您的开发过程,通常是从本地包服务器更新您的开发箱。这允许您“冻结”依赖项列表(即只是停止获取上游更新),以便每个人都使用相同的版本。您可以在特定时间更新并让开发人员更新,让每个人保持同步。
对于客户安装,您通常会编写安装脚本。您可以同时收集所有软件包并安装libs以及另一个软件包。尝试安装新的Python甚至任何标准库可能会出现问题,因为客户可能已经依赖于不同的版本。通常,您可以安装在沙箱中以将软件包与系统软件包分开。这在Linux上比Windows更具问题。
<强>工具链强>
另一种选择是为每个支持的操作系统创建工具链。工具链是所有依赖项(最多但不包括基本OS库,如glibc
)。此工具链将为开发人员 AND 客户打包和分发。工具链的最佳实践是:
.../bin
目录中以防止意外使用。 (即,在Linux上,您可以在.../libexec
下安装。/opt
也会被使用,但我个人却厌恶它。)lib/python/site-packages
下的正确位置,这样您就不必使用PYTHONPATH。.py
文件,以便安装脚本可以适当地重新定位它们。 答案 3 :(得分:0)
假设第三方库可从pypi获得,请使用 distutils ,并在setup.py中指定所需的版本。