我最近安装了anaconda版本的python。现在,当我在终端中键入python
时,它会打开anonconda发行版而不是默认发行版。如何让它在linux(ubuntu 12.04)中使用命令python
的默认版本?
答案 0 :(得分:50)
anaconda将路径添加到.bashrc
,因此首先找到它,您可以将默认python的路径添加到.bashrc
,或者如果您不想使用它,则删除anaconda的路径
您还可以使用bash中的完整路径/usr/bin/python
来使用默认的python解释器。
如果您保留.bashrc
文件,则使用python
运行的任何命令都将使用anaconda解释器,如果需要,您还可以为每个解释器使用alias
。
您会在export PATH=$HOME/anaconda/bin:$PATH
文件中看到类似.bashrc
的内容。
所以基本上如果你想使用anaconda作为你的主要日常翻译使用默认python的完整路径或创建一个alias
,如果你想要它反过来删除export PATH=...
。来自bashrc
并使用完整路径到anaconda python解释器。
答案 1 :(得分:14)
到目前为止我已经尝试了所有建议我认为修改〜/ .bashrc中的export语句,正如Piotr Dobrogost似乎所暗示的那样,是考虑以下因素的最佳选择:
所以在〜/ .bashrc而不是
# added by Anaconda3 4.3.0 installer
export PATH="/home/user/anaconda3/bin:$PATH"
一个人会用
export PATH="$PATH:/home/user/anaconda3/bin"
答案 2 :(得分:6)
我遇到了同样的问题,您可以执行以下操作 进入您的bashrc,您会发现类似的一行
export PATH=~/anaconda3/bin:$PATH
您要做的就是将其注释掉,然后输入
alias pyconda='~/anaconda3/bin/python3'
或任何路径。这对我有用
答案 3 :(得分:1)
python
和python2
两个目录中都有python2.7
,/home/username/anaconda/bin/
和/usr/bin/
个快捷方式。因此,您可以从一个文件夹中删除其中任何一个,并将其用于其他文件夹。我的意思是,
如果你从anaconda目录中删除python2
快捷方式,你将拥有,
python for anaconda版本和
python2
表示终端中的默认版本。
答案 4 :(得分:1)
我发现虽然我删除了export=.../anaconda3/bin:$PATH
,但.../anaconda3/envs/py36/bin
中仍有PATH
(我在anaconda中的虚拟环境),shell仍使用anaconda python。
所以我export PATH=/usr/bin:$PATH
(/usr/bin
是系统python驻留的地方)。虽然/usr/bin
中的PATH
已经python
,但我们会在anaconda的路径之前搜索它,然后当您键入python3.6
,pip
,{{1}时,shell将使用系统python },pip3
....
你可以使用上面提到的别名来回到anaconda,或者通过评论export PATH=/usr/bin:$PATH
再次默认为anaconda
答案 5 :(得分:1)
在2020年,Conda在.bash_profile
文件的底部添加了一个更复杂的代码块,如下所示:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/spacetyper/opt/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/spacetyper/opt/miniconda3/etc/profile.d/conda.sh" ]; then
. "/Users/spacetyper/opt/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/Users/spacetyper/opt/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
要默认使用默认的Python安装:只需将这段代码移到.bash_profile
文件的最顶部即可。
要让自己选择使用安装了Conda的Python,:在上方Conda代码块的下方下方添加此行。
alias pyconda="/Users/spacetyper/opt/miniconda3/bin/python3"
现在,您应该可以使用python
调用系统Python安装,而使用pyconda
调用Conda安装。
答案 6 :(得分:1)
在 2020 年,就像提到的@spacetyper 一样,它的行为有所不同。我从这个问题中找到了一个方便的解决方案:How do I prevent Conda from activating the base environment by default?
要禁用自动基础激活:
conda config --set auto_activate_base false
第一次运行后,它会在主目录中创建一个 ./condarc
。
答案 7 :(得分:0)
我谨慎地使用Anaconda构建跨平台软件包,但我不想将它用作我日常的python驱动程序。我为Anaconda,Ruby和Node项目采用的是使用环境沙箱,它基本上隐藏了远离您路径的功能,直到您特别需要它为止。我首先从这两个github回购中了解到它:
https://github.com/benvan/sandboxd
https://github.com/maximbaz/dotfiles
我有一个沙盒功能文件,如下所示:
#!/bin/zsh
# Based on
# https://github.com/maximbaz/dotfiles/.zsh/sandboxd.zsh
# which was originally adapted from:
# https://github.vom/benvan/sandboxd
# Start with an empty list of all sandbox cmd:hook pairs
sandbox_hooks=()
# deletes all hooks associated with cmd
function sandbox_delete_hooks() {
local cmd=$1
for i in "${sandbox_hooks[@]}";
do
if [[ $i == "${cmd}:"* ]]; then
local hook=$(echo $i | sed "s/.*://")
unset -f "$hook"
fi
done
}
# prepares environment and removes hooks
function sandbox() {
local cmd=$1
# NOTE: Use original grep, because aliased grep is using color
if [[ "$(type $cmd | \grep -o function)" = "function" ]]; then
(>&2 echo "Lazy-loading '$cmd' for the first time...")
sandbox_delete_hooks $cmd
sandbox_init_$cmd
else
(>&2 echo "sandbox '$cmd' not found.\nIs 'sandbox_init_$cmd() { ... }' defined and 'sandbox_hook $cmd $cmd' called?")
return 1
fi
}
function sandbox_hook() {
local cmd=$1
local hook=$2
#echo "Creating hook ($2) for cmd ($1)"
sandbox_hooks+=("${cmd}:${hook}")
eval "$hook(){ sandbox $cmd; $hook \$@ }"
}
在我的.zshrc
我创建了我的沙箱&#39; d功能:
sandbox_hook conda conda
此命令将普通conda
可执行文件转换为:
conda () {
sandbox conda
conda $@
}
使用这种技术的另一个好处是它可以加快shell加载时间,因为获取大量的包装脚本(例如nvm
,rvm
等)可能会减慢shell启动时间。
它还告诉我,Anaconda默认将它的python3可执行文件安装为python
,这打破了许多传统的python脚本,但这是一个单独的问题。像这样使用沙盒让我明确地意识到我使用的是Anaconda的python而不是系统默认值。
答案 8 :(得分:0)
Anaconda 3在我的.bashrc中添加了不仅仅是简单的一行。 但是,它也将原始.bashrc文件备份到.bashrc-anaconda3.bak中。 所以我的解决方案是交换两者。
答案 9 :(得分:0)
对于我来说,当我有
alias python='/usr/bin/python3.6'
在~/.bashrc
中,它始终在Anaconda虚拟环境内部和外部调用python3.6
。
在此设置中,您可以在每个虚拟环境中通过python3
设置Python版本。