python - 如何处理用 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 实现如此复杂的系统似乎也很罕见?所以,最后一个问题是:我们的方法是正确的,还是真的没有“正确的方法”?还是我们的方法完全错误?
解决方案
推荐阅读
- android - 在 camera2 中,自定义相机特性构建不起作用
- machine-learning - 权重,adaboost 分类器中的选定特征
- javascript - 如何通过反应将数据从对话框发送回父容器?
- python - 如何将 json 对象列表转换为单个 pyspark 数据框?
- html - 在 div 内拉伸任意数量的 span
- amazon-web-services - Terraform 使用 s3 存储桶的现有策略
- bash - 将值传递给 bash 脚本中的标志
- javascript - 使用订阅功能从angular7中的节点获取空响应
- c++ - 在 Linux 上设置英特尔 C++ 编译器(英特尔 System Studio 的 ICC)
- c# - 如何立即停止正在运行的 DbContext.SaveChanges()