python - 如何找到运行我的代码的 conda 环境的名称?

标签 python anaconda jupyter conda env

我正在寻找一种从正在运行的代码或交互式 python 实例中找出我所在的 conda 环境名称的好方法。

用例是我正在运行 Jupyter 笔记本,同时安装了 miniconda 的 Python 2 和 Python 3 内核。默认环境是 Py3。 Py2 有一个单独的环境。在笔记本文件中,我希望它尝试 conda install foo。我现在正在使用 subcommand 来执行此操作,因为我找不到与 pip.main(['install','foo']) 等效的编程 conda .

问题是如果 notebook 使用 Py2 内核运行,该命令需要知道 Py2 环境的名称才能在其中安装 foo。如果没有该信息,它将安装在默认的 Py3 环境中。我希望代码能够自行确定它所在的环境以及正确的名称。

到目前为止,我得到的最佳解决方案是:

import sys

def get_env():
    sp = sys.path[1].split("/")
    if "envs" in sp:
        return sp[sp.index("envs") + 1]
    else:
        return ""

有没有更直接/更合适的方式来实现这一点?

最佳答案

你想要 $CONDA_DEFAULT_ENV$CONDA_PREFIX:

$ source activate my_env
(my_env) $ echo $CONDA_DEFAULT_ENV
my_env

(my_env) $ echo $CONDA_PREFIX
/Users/nhdaly/miniconda3/envs/my_env

$ source deactivate
$ echo $CONDA_DEFAULT_ENV  # (not-defined)

$ echo $CONDA_PREFIX  # (not-defined)

在python中:

import os
print(os.environ['CONDA_DEFAULT_ENV'])

对于通常更有用的绝对完整路径:

Python 3.9.0 | packaged by conda-forge | (default, Oct 14 2020, 22:56:29) 
[Clang 10.0.1 ] on darwin
import os; print(os.environ["CONDA_PREFIX"])
/Users/miranda9/.conda/envs/synthesis

环境变量没有很好的记录。您可以找到此处提到的 CONDA_DEFAULT_ENV: https://www.continuum.io/blog/developer/advanced-features-conda-part-1

我能找到的关于 CONDA_PREFIX 的唯一信息是这个问题: https://github.com/conda/conda/issues/2764

关于python - 如何找到运行我的代码的 conda 环境的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539623/

相关文章:

ipython - 打开 'ipython notebook' 为 : IPython notebook vs Jupyter

curl - 使用 CLI 从外部 URL 下载 Jupyter Notebook

python - 将大空格键与 Raspberry Pi 连接

python - 使用 Python 请求获取 html?

python - 安装后如何让 Anaconda3 看到 Python 2.7?

python - 当conda尚未支持时,如何在Windows上安装最新的Tensorflow(在此处为: 2. 2)?

python-3.x - 在 Jupyter 中跨多个单元格拆分类函数?

python - 在单独的项目中从 App Engine 连接到 GCP Cloud SQL

python - 在 Selenium Webdriver 中呈现页面后禁用 Javascript

python - 使用 numba 类方法时出现 NotImplementedError(dtype)