我最近安装了 Python 的 Anaconda 版本。现在,当我在终端中输入 python
时,它会打开 Anaconda 发行版,而不是默认发行版。如何让它在 Linux (Ubuntu 12.04 (Precise Pangolin)) 上使用命令 python
的默认版本?
PATH
上?
export PATH="/Users/YOURNAME/miniconda3/bin:$PATH"
.zhrc
)我在上面粘贴的导出命令,但由于某种原因,有一组嵌套的 if 语句阻止运行导出。我不知道为什么,但这也可能是发生在你身上的事情。无论如何,在 conda init 添加到我的 .zshrc
的代码之后添加上述内容。
Anaconda 将路径添加到您的 .bashrc
,因此首先找到它。您可以将默认 Python 实例的路径添加到 .bashrc
或删除 Anaconda 的路径(如果您不想使用它)。
您还可以使用 Bash 中的完整路径 /usr/bin/python
来使用默认 Python 解释器。
如果您保持 .bashrc
文件不变,则使用 python
运行的任何命令都将使用 Anaconda 解释器。如果需要,您还可以为每个解释器使用 alias
。
您将在 .bashrc
文件中看到类似 export PATH=$HOME/anaconda/bin:$PATH
的内容。
所以基本上,如果您想使用 Anaconda 作为您的主要日常解释器,请使用默认 Python 的完整路径或创建一个 alias
。如果您想反过来,请删除 export PATH=...
。从 bashrc
并使用 Anaconda Python 解释器的完整路径。
到目前为止已经尝试了所有建议,我认为修改文件 ~/.bashrc 中的导出语句,正如 Piotr Dobrogost 似乎建议的那样,是考虑以下因素的最佳选择:
如果删除整个语句,则必须使用 Conda 二进制文件的完整路径。
使用目录 anaconda/bin/ 中的 Conda 4.4.10 链接指向同一目录中的二进制文件,而不是 /usr/bin 中的系统文件。
使用这种方法,您可以获得以前包含在 $PATH 中的所有系统程序,以及特定于 anaconda 的系统程序,而无需使用完整路径。
所以在文件 ~/.bashrc 而不是
# Added by the Anaconda3 4.3.0 installer
export PATH="/home/user/anaconda3/bin:$PATH"
一个人会用
export PATH="$PATH:/home/user/anaconda3/bin"
~/.bash_profile
brew cask install anaconda
安装了 anaconda:export PATH="$PATH:/usr/local/anaconda3/bin"
export PATH="/Users/YOURNAME/miniconda3/bin:$PATH"
我遇到了同样的问题,您可以执行以下操作。
进入您的 .bashrc 文件,您会发现类似的一行:
export PATH=~/anaconda3/bin:$PATH
您将其注释掉,然后输入:
alias pyconda='~/anaconda3/bin/python3'
或者无论你的路径是什么。这对我有用。
在 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 安装。
在 2020 年,就像@spacetyper 提到的那样,它的表现有所不同。我从这个问题中找到了一个方便的解决方案:How do I prevent Conda from activating the base environment by default?
要禁用自动基础激活:
conda config --set auto_activate_base false
第一次运行后,它将在主目录中创建一个 ./condarc
。
我发现,虽然我去掉了export=.../anaconda3/bin:$PATH
,但PATH
中还有.../anaconda3/envs/py36/bin
(我在Anaconda中的虚拟环境),而且shell仍然使用Anaconda Python。
所以我export PATH=/usr/bin:$PATH
(/usr/bin
是系统 Python 所在的位置)。虽然 PATH
中已经有 /usr/bin
,但我们让它在 Anaconda 的路径之前搜索,然后当您键入 python
、python3.6
、pip
、pip3
时,shell 将使用系统 Python。 ...
您可以使用上述别名返回 Anaconda,或者通过注释 export PATH=/usr/bin:$PATH
再次默认为 Anaconda。
/home/username/anaconda/bin/
和 /usr/bin/
目录中都有 python
、python2
和 python2.7
快捷方式。因此,您可以从一个文件夹中删除其中的任何一个并将其用于另一个文件夹。
我的意思是,如果您从 Anaconda 目录中删除 python2
快捷方式,您将拥有 Python for Anaconda 版本和 python2
终端中的默认版本。
我很少使用 Anaconda 来构建跨平台包,但我不想将它用作 Python 的日常驱动程序。对于 Anaconda、Ruby 和 Node.js 项目,我已采用环境沙盒,它基本上将功能隐藏在远离路径的函数后面,直到您特别需要它。我首先从这两个 GitHub 存储库中了解到它:
https://github.com/benvan/sandboxd
https://github.com/maximbaz/dotfiles
我有一个沙盒函数文件,如下所示:
.zsh/sandboxd.zsh:
#!/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 the 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
在我的 .zshrc
中,我创建了我的沙盒函数:
sandbox_hook conda conda
此命令将正常的 conda
可执行文件转换为:
conda () {
sandbox conda
conda $@
}
使用这种技术的另一个好处是它可以加快 shell 加载时间,因为采购许多包装脚本(例如 nvm
、rvm
等)会减慢 shell 启动时间。
它还让我感到烦恼的是,Anaconda 默认将其 Python 3 可执行文件安装为 python
,这破坏了许多旧版 Python 脚本,但这是一个单独的问题。像这样使用沙盒让我明确地意识到我正在使用 Anaconda 的 Python 而不是系统默认值。
~/.bashrc
或 ~/.zshrc
中获取沙盒功能,然后通过放置以下内容为 conda 创建沙盒在采购沙盒功能之后:sandbox_hook conda conda
Anaconda 3 在我的 .bashrc 文件中添加的不仅仅是一个简单的行。但是,它也会将原始 .bashrc 文件备份到 .bashrc-anaconda3.bak 文件中。
所以我的解决方案是交换两者。
就我而言,当我有
alias python='/usr/bin/python3.6'
在 ~/.bashrc
中,它始终在 Anaconda 虚拟环境内外调用 python3.6
。
在此设置中,您可以在每个虚拟环境中通过 python3
设置 Python 版本。
不定期副业成功案例分享
export PATH="/Users/YOURNAME/miniconda3/bin:$PATH"
?这似乎对我有用。