【发布时间】:2019-10-06 02:25:12
【问题描述】:
短篇小说:
我有一个非常大的 python 项目
由ServiceA、ServiceB、ServiceC等组成。
为了模块化,每个服务都有自己的虚拟环境。
每个服务都需要一些来自其他服务的foo()。
ServiceA import package_aServiceB import package_bServiceC import package_c
等等。
我不想为所有服务创建一个单一的环境,因为这会使维护非常麻烦。
在保持模块化的同时集成这样一个项目以协同工作的好方法是什么?
长篇大论:
我有一个非常大的项目,其中包含 25 多个相互通信的大模块。
它们都为所有依赖项使用一个非常大的单一环境。
升级一个模块中的软件包可能会(而且经常会)破坏其他模块。
Pycharm 的索引也需要更长的时间。
在新机器上安装软件包需要的时间比它应该的要长得多
最糟糕的当然是害怕升级,因为破坏一切的机会增加了。
大多数模块只需要所有已安装包的子集。
所有这些都在 python 2.7 中,我们想升级到 python 3,由于项目大小,无法一次完成。
我们必须一次迁移一个模块,同时保持系统功能,用于业务目的和测试能力目的。
我相信这需要一些模块拥有自己的解释器,同时仍然以某种方式与其他模块一起工作。
怎么做?
【问题讨论】:
-
你解决了吗?我想听听。
-
@SorousHBakhtiary 我没有。一种可能的方法是为每个服务定义一个 API,并在不同的进程或不同的服务器中独立于其他服务运行它。让他们通过该 API 进行通信。导入和函数调用不可用 AFAIK
标签: python python-2.7 module virtualenv modularity