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

新手上路,请多包涵

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

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

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

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

 import sys

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

有没有更直接/合适的方法来完成这个?

原文由 Alnilam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 503
2 个回答

你想要 $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)

在蟒蛇中:

 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_ENVhttps ://www.continuum.io/blog/developer/advanced-features-conda-part-1

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

原文由 NHDaly 发布,翻译遵循 CC BY-SA 4.0 许可协议

conda info

直接列出所有信息,在第一行中您可以看到

active environment: (some name)
active env location: (location of active environment)

我想这是最清楚的方法。

在 Jupyter Notebook 或 Jupyter Lab 等交互式环境中,您应该在键入命令之前使用 %,如下所示,

 %conda info

原文由 CrmXao 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题