从终端调用时使用默认的 Python 而不是 Anaconda 安装

2024-10-25 08:42:00
admin
原创
293
摘要:问题描述:我最近安装了 Anaconda 版本的 Python。现在当我在python终端中输入时,它会打开 Anaconda 发行版而不是默认发行版。如何让它python在 Linux(Ubuntu 12.04(Precise Pangolin))上使用默认版本的命令?解决方案 1:Anaconda 将路径...

问题描述:

我最近安装了 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 解释器。如果您愿意,还可以使用aliasfor 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`PATHpythonpython3.6pippip3`

您可以使用上面提到的别名返回到 Anaconda,或者通过注释再次默认回到 Anaconda export PATH=/usr/bin:$PATH

解决方案 7:

和目录中都有pythonpython2和快捷方式。因此,您可以从一个文件夹中删除其中任何一个,并将其用于另一个文件夹。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 的加载时间,因为获取大量包装脚本(例如nvmrvm等)可以减慢 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 版本。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2606  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1558  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   40  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   38  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   33  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用