一个项目的三个模块依赖三个不同的虚拟环境

A project's three module rely on three different virtual environment

现在我有一个项目,我认为它可以分为三个不同的模块,如下所示。

project
│   README.md
│ 
└───flask_web
│   └───app_folder
│   |   └───  ...
|   |   └───  ...
|   |   |   __init__.py
|   |
│   │   app_run.py
│   └───venv
│       └──bin        
|   
│      
└───Fate
|   └─── ...
|   └───env
|       └───python36
|           └───venv
|               └───bin
|
└───fake_data_algorithm
    └─── ...
    └───venv
        └───bin

第一部分'web'是一个提供web服务的flask应用,它需要一个虚拟环境。

第二部分'fate'是一个联邦学习的开源项目,也需要一个虚拟的environment.If我想启动联邦学习过程的系统,我要源码'fate/bin/init_env.sh'激活提供环境。

第三部分'fake_data_algorithm'用于根据'data'文件夹生成假数据,部分python包也需要虚拟环境

因为 'web' 应用程序从浏览器收到请求后,它会调用 'fate' or 'fake_data_algorithm', 但他们都在不同的虚拟环境中,所以我应该重新获取环境。

有一点很费解me:Is有一个机制可以让整个项目保持运行without switching the virtual environment。而且因为“命运”是一个比较接近的部分,所以我想保持尽可能'fate'的虚拟环境(尽量避免将所有python包放在项目下的单个环境中)。

Something really puzzles me:Is there a mechanism that can enable the whole project keep running without switching the virtual environment.And because the "fate" is a relatively close part, I want to keep the virtual environment of 'fate' as far as possible(try to avoid put all the python packages in a single environment under project).

当您在 CLI 中输入命令时,切换虚拟环境只是一个舒适的功能。您不必手动切换虚拟环境。

您可以编写一个小的批处理脚本来执行您的项目:

#!/bin/sh

cd /home/username/project/flask_web &&
./venv/bin/python ./app_run.py

这会将工作目录设置为 /home/username/project/flask_web(重要...)并使用工作目录的虚拟环境来执行您的项目。

根据您的IDE,您还可以select在项目设置中使用Python Interpreter/Virtual 环境。 因此,在您的 IDE 中,您可以打开多个项目,但它们都使用不同的 Python 解释器和库。