从终端调用时使用默认的 Python 而不是 Anaconda 安装
- 2024-10-25 08:42:00
- admin 原创
- 78
问题描述:
我最近安装了 Anaconda 版本的 Python。现在当我在python
终端中输入时,它会打开 Anaconda 发行版而不是默认发行版。如何让它python
在 Linux(Ubuntu 12.04(Precise Pangolin))上使用默认版本的命令?
解决方案 1:
Anaconda 将路径添加到您的.bashrc
,因此首先会找到它。您可以将路径添加到您的默认 Python 实例,.bashrc
或者如果您不想使用它,则可以删除 Anaconda 的路径。
您还可以在 Bash 中使用完整路径/usr/bin/python
来使用默认的 Python 解释器。
如果您保留.bashrc
文件原样,则您运行的任何命令python
都将使用 Anaconda 解释器。如果您愿意,还可以使用alias
for each 解释器。
您将export PATH=$HOME/anaconda/bin:$PATH
在.bashrc
文件中看到类似的内容。
因此,基本上,如果您想使用 Anaconda 作为您日常的主要解释器,请使用默认 Python 的完整路径或创建一个alias
。如果您希望反过来,请从中删除export PATH=...
。bashrc
并使用 Anaconda Python 解释器的完整路径。
解决方案 2:
到目前为止尝试了所有建议后,我认为修改文件~/.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"
解决方案 3:
我遇到了同样的问题,您可以执行以下操作。
进入你的.bashrc文件,你会发现类似的行:
export PATH=~/anaconda3/bin:$PATH
你将其注释掉并输入:
alias pyconda='~/anaconda3/bin/python3'
或者无论你的路径是什么。这对我来说很有效。
解决方案 4:
在 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
并使用 调用 Conda 安装pyconda
。
解决方案 5:
在 2020 年,就像 @spacetyper 提到的那样,它的行为有所不同。我从这个问题中找到了方便的解决方案:如何防止 Conda 默认激活基础环境?
要禁用自动基础激活:
conda config --set auto_activate_base false
./condarc
第一次运行后它将在主目录中创建一个。
解决方案 6:
我发现,虽然我删除了export=.../anaconda3/bin:$PATH
,但仍然有.../anaconda3/envs/py36/bin
(我在 Anaconda 中的虚拟环境)PATH
,并且 shell 仍然使用 Anaconda Python。
因此,我export PATH=/usr/bin:$PATH
(是系统 Python 所在的位置)。尽管中/usr/bin
已经有,但我们让它在 Anaconda 路径之前进行搜索,然后当您键入、、、 ... 时,shell 将使用系统 Python 。/usr/bin
`PATHpython
python3.6pip
pip3`
您可以使用上面提到的别名返回到 Anaconda,或者通过注释再次默认回到 Anaconda export PATH=/usr/bin:$PATH
。
解决方案 7:
和目录中都有python
、python2
和快捷方式。因此,您可以从一个文件夹中删除其中任何一个,并将其用于另一个文件夹。python2.7
`/home/username/anaconda/bin/`/usr/bin/
python2
我的意思是,如果您从 Anaconda 目录中
删除快捷方式,您将拥有 Anaconda 版本的 Python 和python2
终端中的默认版本。
解决方案 8:
我偶尔会使用 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.
Is '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,而不是系统默认的 Python。
解决方案 9:
Anaconda 3 在我的.bashrc文件中添加了不止一行。但是,它还将原始.bashrc文件备份为.bashrc-anaconda3.bak文件。
所以我的解决方案是交换两者。
解决方案 10:
就我的情况来说,当我有
alias python='/usr/bin/python3.6'
在 中~/.bashrc
,它总是python3.6
在 Anaconda 虚拟环境的内部和外部调用。
python3
在此设置中,您可以在每个虚拟环境中设置 Python 版本。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件