【发布时间】:2018-07-12 16:44:00
【问题描述】:
conda 是否提供了一种从正在运行的 Python 程序中激活环境的方法?
例如,使用virtualenv 创建的每个虚拟环境(venv)都有一个脚本venv/bin/activate_this.py(假设您在Linux 上),可用于在正在运行的Python 程序中激活venv,如下所示:
activate_this = '/full/path/to/venv/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
我只是想知道我是否需要为这项工作调整 virtualenv 的 activate_this.py(virtualenv 和 conda 环境的结构略有不同,所以不能按原样工作)或者有一个现有的方法。
【问题讨论】:
-
@darthbith 我正在重新访问一个不久前工作的 Flask 网络应用程序。那里的问题是应用程序本身在 virtualenv 虚拟环境中运行,但是在同一环境中安装 uwsgi 时遇到了困难。所以我在一个单独的 Conda 环境中安装了 uwsgi 模块。在初始化时,必须使用 conda env 启动 uwsgi,然后切换到 virtualenv 以实际运行应用程序。
-
@darthbith 所以有一种方法可以切换到 virtualenv 环境。看到这个:github.com/pypa/virtualenv/blob/… 很好奇 conda 是否内置了任何类似的功能。
-
正如我所说,我认为没有办法做到这一点。原因可能是因为 conda 环境不仅仅是 virtualenv 环境......它们可以拥有自己的编译器,运行脚本以在执行时设置环境变量等。为什么不将 virtualenv 重新创建为 conda env 并添加 uwsgi 呢?
-
@darthbith 你对 conda envs 更多参与是正确的。我最终这样做了 - 将所有内容放在一个 conda env 中。我正在远离 virtualenv,只是想在它和 conda 之间找到一些相似之处,因此提出了这个问题。
标签: python virtualenv conda miniconda