我想从Python会话中以一般方式检测它是否由conda管理.
一些不够通用的想法是有用的:
import os
is_conda = 'CONDA_PREFIX' in os.system or 'CONDA_DEFAULT_ENV' in os.system
Run Code Online (Sandbox Code Playgroud)
这似乎不适用于根conda环境,其中并不总是定义这些变量.如果在使用其他Python安装时碰巧激活了conda,它也可能存在误报.
import sys
is_conda = ('anaconda' in sys.executable) or ('miniconda' in sys.executable)
Run Code Online (Sandbox Code Playgroud)
这将适用于用户在默认路径中安装anaconda/miniconda的情况.否则可能会失败.也很容易想象假阳性.
正如在任何方式判断用户的python环境是否为anaconda的答案中所述,您可以在某些情况下检查Python版本字符串:
import sys
is_conda = ('Continuum Analytics' in sys.version) or ('Anaconda' in sys.version)
Run Code Online (Sandbox Code Playgroud)
这适用于从默认通道安装的Python,但这非常脆弱,将来可能会中断,特别是Continuum的公司名称更改.如果从第三方来源(如conda-forge)安装Python,它也可能会失败.
conda导入try:
import conda
except:
is_conda = False
else:
is_conda = True
Run Code Online (Sandbox Code Playgroud)
只要您处于根conda环境中,这通常会失败,但如果您处于conda默认情况下未安装软件包的另一个conda环境中,则通常会失败.
conda看看它是否有效Atto Allas的建议如下:
import subprocess
try:
retcode = subprocess.call(['conda', 'install', '-y', 'pip'])
except:
is_conda = False
else:
is_conda = (retcode == 0)
Run Code Online (Sandbox Code Playgroud)
这在最简单的情况下有效,但在Jupyter中使用多个内核的常见情况下失败,其中conda可执行文件可能连接到当前的Python内核,也可能没有连接到当前的Python内核.
是否有任何完全通用的方法从Python检测Python安装是否由conda管理?
Ros*_*nen 13
import sys, os
is_conda = os.path.exists(os.path.join(sys.prefix, 'conda-meta'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |