首页 > 解决方案 > 外部python出现在anaconda环境中

问题描述

我正在尝试按照这个简单的教程在 anaconda 中添加不同版本的 python。我执行以下操作:

benjamins-mbp:ben ~ % conda create -n py36 python=3.6 anaconda  
benjamins-mbp:ben ~ % conda activate py36  
(py36) benjamins-mbp:ben ~ % python --version  
>>> Python 3.8.2

我希望Python 3.6.10

但是,当我在环境中打开 Jupyter 笔记本py36并检查 python 时,版本是正确的:

from platform import python_version
print(python_version()) 
>>> 3.6.10

我想这是因为我在.zshrc?

# Set alias for python3.8
alias python='python3.8'

(py36) benjamins-mbp:ben ~ % which python给我python: aliased to python3.8

为什么我可以python3.8py36没有安装它的地方访问?我该如何解决这个问题,以便我的虚拟环境引用它的本机 python?

标签: pythonjupyter-notebookanacondavirtualenvconda

解决方案


你实际上回答了你自己的问题。Shell 倾向于在执行任何其他操作之前扩展别名。这就是别名的全部意义。

通常,程序在您的系统上只有一个版本,因此不太可能alias ls='ls -al'alias rm='rm -i'会让您绊倒。Python 在这方面很特别,因为它有效地鼓励在虚拟环境中在您的系统上安装多个版本(更不用说同一版本的多个副本)。

虚拟环境是通过环境变量配置的,例如PATH. 这些不适用于别名。解决方案是永远不要给 python 起别名。如果您需要将其命名为其他名称,请将其作为PATH您想要的虚拟环境中的符号链接。

这不适用于 python 的系统安装。最有可能的是,您的脚本期望将特定版本符号链接为/usr/bin/python. 此时,您的虚拟环境应该取代对别名的需求。


推荐阅读