首页 > 解决方案 > 如何处理用 Python 实现的复杂系统的依赖管理

问题描述

我们开发了一个包含许多不同 Python 脚本和模块的系统。有些部署到自托管的 PyPI,有些则简单打包成 zip 文件(存储在自托管的 Artifactory 中)。最后,还有另一个应用程序(不是我们开发的),它使用我们的一些 Python 脚本作为插件。所以,我猜,依赖图对于 python 环境来说相当复杂。以下代码段应解释该图:

Script (own, zip package)
    Module (own, pypi)
        Module (external, pypi)
Module (own, pypi)
    Module (external, pypi)

这只是一个例子,实际上,还有更多的依赖关系。但归根结底,它是 zip 打包和 pypi 打包的 Pyhton 脚本和模块的混合体。pypi 模块的依赖关系通过 setup.py 中的 setuptools install_requires 参数进行管理。但是 zip 打包脚本的依赖关系是通过自我实现的配置和安装脚本来管理的。

最后,我们的安装脚本会创建一个虚拟环境并在其中安装所有依赖项。通过 pip 或简单地下载 zip 文件并将其放在正确的目录中。但老实说,这感觉有点奇怪,我们不确定这是否是正确的(pythonic)方式。

我们已经通过互联网搜索了几天,但没有找到答案。用 Python 实现如此复杂的系统似乎也很罕见?所以,最后一个问题是:我们的方法是正确的,还是真的没有“正确的方法”?还是我们的方法完全错误?

标签: pythonpipvirtualenvpypisoftware-distribution

解决方案


推荐阅读