如何conda知道我知道名称但又不想激活该环境的环境中安装了哪个Python版本?
背景:我选择偷懒的方法让python3.6我对Ubuntu 14.04机器和安装conda。不过,我想某些目录添加到我的PYTHONPATH取决于环境是否具有python2.x或者python3.x,我打算通过包装来做到这一点conda的activate,像这样:
PYMAJOR=$(a_miracle_occurs $CONDAENV)
BASHRC=$(cat <<EOF
source ~/.bashrc
source activate $CONDAENV
export PATH=...
export PYTHONPATH=".../modules$PYMAJOR"
"
EOF
)
bash --rcfile <(echo "${BASHRC}")
Run Code Online (Sandbox Code Playgroud)
我对Subversion的版本没有兼容性问题,python也不想setup.py develop在PYTHONPATH将来的模块中使用,因为在结构级别上仍然有太多更改。
备注:我知道,conda list -n ENVNAME但这将涉及解析人类可读的输出,我觉得最好以机器可读的形式检索信息。
这是将打印环境和相关的python版本的单行代码:
conda env list | grep -v "^$\|#" |awk '{print $1;}'|xargs -I{} -d "\n" sh -c 'printf "Env: {}\t"; conda list -n {} |grep "^python\s";'
Run Code Online (Sandbox Code Playgroud)
这是一个示例输出:
Env: base python 2.7.14 h1571d57_29
Env: python37 python 3.7.0 hc3d631a_0
Run Code Online (Sandbox Code Playgroud)
基本原理:使用conda env list,排除空行和#来获取环境列表,进行解析,使用conda list -n <env>以及grep for python 打印环境包。
欢迎您根据自己的喜好调整格式。
我对 anaconda 一点也不熟悉,接下来的一切都是一个疯狂的猜测。如果 anaconda 在内部使用 virtualenv,则应该将 virtualenv 安装到某个目录中(可能类似于$ANACONDA_HOME/envs/$CONDAENV?)。
如果是这种情况,那么只需运行 即可检索 Python 版本$ANACONDA_HOME/envs/$CONDAENV/bin/python --version。
编辑以解决OP评论:
要仅返回版本字符串,请尝试:
$ANACONDA_HOME/envs/$CONDAENV/bin/python -c 'import platform; print(platform.python_version())'
>>> 3.6.0
Run Code Online (Sandbox Code Playgroud)