繁体   English   中英

运行使用多个 conda 环境的 Flask 应用程序

[英]Running a flask app that uses multiple conda environments

正如标题所说,我想从 1 个 Flask 应用程序运行多个 conda 环境,以便某些页面使用 1 个版本的包,而其他页面使用不同版本的包。

或者,我可以做一些同时运行 2 个应用程序的事情,然后需要能够正确地从一个重定向到另一个。

我在互联网上搜索并没有找到任何东西。 关于从哪里开始的任何想法/文档?

编辑我被告知这是一个坏主意并详细说明问题而不是我尝试的解决方案

问题是我有一些包,我试图与在不同版本的 scikit 中完成的 2 个不同的 ML 模型进行交互。 我无法重新创建模型,因为它是由同事给我的。 此外,我正在使用 Fuzzywuzzy 进行一些名称匹配,这会导致我需要的其他软件包出现问题。

您可以通过将两个版本安装到不同位置(这样它们不会相互覆盖)来完成您的要求,然后重命名软件包,因为这似乎是您唯一的选择。

以下面的例子为例,我将设置 2 个虚拟环境,第一个我将安装 scitkit-learn 0.22.2,第二个我将安装 0.20.4,然后移动包的名称以便 python 可以区分它们并打印版本($ 表示要在命令行上输入的内容):

$ python3 -m venv sk1
$ source sk1/bin/activate
$ pip3 install scikit-learn==0.22.2 # install to venv 1
$ deactivate # leave

$ python3 -m venv sk2
$ source sk2/bin/activate
$ pip3 install scikit-learn==0.20.4 # install to venv 2
$ deactivate

# move the package names
$ mv ./sk1/lib/python3.7/site-packages/sklearn ./sk1/lib/python3.7/site-packages/sklearn0222

$ mv ./sk2/lib/python3.7/site-packages/sklearn ./sk2/libpython3.7/site-packages/sklearn0204

# add both of them to your PYTHONPATH
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/sk1/lib/python3.7/site-packages/sklearn0222
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/sk2/lib/python3.7/site-packages/sklearn0204

现在让我们进入python解释器,导入它们:

$ python3
>>> import sklearn0222 as sk0222
>>> import sklearn0204 as sk0204
>>> sk0222.__version__
'0.22.2'
>>> sk0204.__version__
'0.20.4'

这将使用特定于包版本的代码来运行,但是在引用每个包时必须非常小心,并且不能在同一模块中同时使用这两个包。 因此,在 mymodule1.py 中,您可以导入 sklearn0222 并使用其子模块,而在 mymodule2.py 中,您可以导入 sklearn0204 并使用其子模块,但是如果您尝试在程序的同一模块中同时使用这两个模块,则第二个模块将无法识别。

同样,这是一个坏主意,但这是一种获得所需内容的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM