我正在分发一个内部 python 库,如果用户在运行此文件时使用 anaconda,则将自动更新库的依赖项。 (这是应要求提供的。如果由我决定,我会让用户控制他们自己的软件包。)
到目前为止,我想出了类似的东西
def _user_has_conda():
cmd = 'conda --help'
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
if len(out) > 0 and len(err) == 0:
return True
else:
return False
但这实际上只告诉我用户的系统上是否安装了 anaconda,而不告诉我当前的 python 进程是否在 anaconda 环境中运行。
我注意到,当我启动 python 或 ipython shell 时,我看到“Python 3.3.3 |Continuum Analytics, Inc|”在顶部。我的下一个想法是尝试找到如何获取此字符串以查看“Continuum Analytics”是否存在,如果存在,则假设用户正在 anaconda 中运行。
我确信那里有更好的想法,这就是我来这里的原因。
谢谢。
对于版本
In [109]: import sys
In [110]: 'conda' in sys.version
Out[110]: True
对于版本 >= 3.7,版本信息已更改为:
In [2]: sys.version
Out[2]: '3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]'
From 这个帖子 https://stackoverflow.com/questions/47608532/how-to-detect-from-within-python-whether-packages-are-managed-with-conda/47610844#47610844解决方案应改为:
import sys, os
is_conda = os.path.exists(os.path.join(sys.prefix, 'conda-meta'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)