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

2024-10-25 08:42:00
admin
原创
78
摘要:问题描述:我最近安装了 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 版本。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用