【问题标题】:How does Anaconda handle existing Python installationAnaconda 如何处理现有的 Python 安装
【发布时间】:2018-12-12 16:23:34
【问题描述】:

我对 Python 和 Ubuntu 比较陌生。过去我在计算机上处​​理多个 Python 版本时遇到过问题,因此我想安装 Anaconda 以在单独的环境中使用 Python 版本。

但是,我无法理解 Anaconda 如何处理多个 Python 版本。我为这篇冗长的帖子道歉,但我很想理解这一点。为了提供一些背景信息,这是我所做的:

第 1 步:检查现有 Python 版本

我有一个新安装的 Ubuntu 18.04。

$ cd
$ ls -l /usr/bin/python*

# Output:
#    0 lrwxrwxrwx 1 root root       9 Oct 25 12:11 /usr/bin/python3 -> python3.6
# 4420 -rwxr-xr-x 2 root root 4522328 Oct 22 12:32 /usr/bin/python3.6
# 4420 -rwxr-xr-x 2 root root 4522328 Oct 22 12:32 /usr/bin/python3.6m
#    0 lrwxrwxrwx 1 root root      10 Oct 25 12:11 /usr/bin/python3m -> python3.6m

到目前为止一切顺利,我基本上默认安装了3.6。

第 2 步:安装 Anaconda

我想保持简单,因此决定在此链接下载 Python 3.7 附带的 Anaconda: https://www.anaconda.com/download/#linux

我是按照以下确切说明进行操作的: http://docs.anaconda.com/anaconda/install/linux/

这包括:

  • 按 Enter 并输入“yes”以查看并接受许可(说明中的第 4. 和 5. 点)
  • 输入“Enter”以接受默认位置(说明中的第 6 点)
  • 输入“yes”以允许安装程序将 Anaconda 添加到 PATH
  • 输入“yes”以允许安装 MicrosoftVS

这一切都奏效了。我可以通过在终端中输入“anaconda-navigator”来启动 Anaconda,在启动 Spyder 后,我可以看到我有 3.7 版

第 3 步:检查现有 Python 版本(再次)

在这里,我只是想了解所有内容的存储位置。

$ cd
$ ls -l /usr/bin/python*

# Output
# lrwxrwxrwx 1 root root       9 Apr 16  2018 /usr/bin/python -> python2.7
# lrwxrwxrwx 1 root root       9 Apr 16  2018 /usr/bin/python2 -> python2.7
# -rwxr-xr-x 1 root root 3670448 Nov 12 14:31 /usr/bin/python2.7
# lrwxrwxrwx 1 root root       9 Oct 25 12:11 /usr/bin/python3 -> python3.6
# -rwxr-xr-x 2 root root 4522328 Oct 22 12:32 /usr/bin/python3.6
# -rwxr-xr-x 2 root root 4522328 Oct 22 12:32 /usr/bin/python3.6m
# lrwxrwxrwx 1 root root      10 Oct 25 12:11 /usr/bin/python3m -> python3.6m

这引出了我的问题(所有问题都已链接)

  • 发生了什么?为什么 Python 2.7 在这里? Anaconda 需要 2.7 才能运行吗?事实上,在 Anaconda 安装的(长)输出中进行一些搜索后发现:

mono-runtime-sgen po-debconf python python-minimal python2.7 python2.7-minimal x11proto-composite-dev x11proto-core-dev m4-doc libmail-box-perl python-doc python-tk python2.7-doc python2.7 python2.7-minimal x11proto-composite-dev x11proto-core-dev 选择以前未选择的包 python2.7-minimal。 准备解压.../python2.7-minimal_2.7.15~rc1-1ubuntu0.1_amd64.deb ... 解包 python2.7-minimal (2.7.15~rc1-1ubuntu0.1) ... 选择以前未选择的包 python2.7。 准备解压.../python2.7_2.7.15~rc1-1ubuntu0.1_amd64.deb ... 解压python2.7(2.7.15~rc1-1ubuntu0.1)... 设置 python2.7-minimal (2.7.15~rc1-1ubuntu0.1) ... 运行时 python2.7 的链接和字节编译包... 设置python2.7 (2.7.15~rc1-1ubuntu0.1) ...t

  • 3.7 在哪里?它在 /home/anaconda3 中吗?

  • 为什么“ls -l /usr/bin/python*”输出中的符号链接错误?确实,当我打开终端时:

    • “python”指向 3.7,而不是建议的 2.7
    • “python3”指向 3.7,而不是建议的 3.6
    • “python2”指向“2.7.15rc1”

是我遗漏了什么还是这一切正常?为长篇大论道歉。非常感谢。

【问题讨论】:

    标签: python ubuntu anaconda


    【解决方案1】:

    Anaconda 默认安装在~/anaconda2~/anaconda3 中,除非您指定了另一个目录。通常,anaconda 不会更改 /usr/bin 中的任何内容,但会将 /path/to/anaconda/bin 添加到您的路径中(在 ~/.bashrc 中)(同样,您必须在安装时指定它)。您可以使用which -a python 查看路径中的python 可执行文件,第一个结果是您从命令行调用python 时将执行的结果。

    注意:python2.7或3.7可以下载anaconda安装脚本,但默认只包含一个版本的python。您可以下载两个版本,但如果这样做,请确保只在路径中添加其中一个

    对于符号链接,由于我不使用 Ubuntu,因此我无法为您提供帮助。我可以告诉你的是,我的系统将python 链接到python2.7,但也许 Ubuntu 在其最新版本中改变了这一点。

    【讨论】:

    • 谢谢!您的回答让我意识到,确实,我感到困惑的原因是我的 $PATH 现在看起来像这样:/home/user-name/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr /sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin,这意味着我的“Anaconda Python”比/usr/bin中的“优先级”因此“python”和“python3”都称为“Anaconda Python”,而不是 /usr/bin 中的那些。据我了解,Python2.7是在我接受安装Microsoft VS时由安装程序安装在usr/bin中的。
    • 是的,anaconda 优先于其他文件夹。如果您怀疑有冲突,请删除 .bashrc 中与 anaconda 相关的行(我过去遇到过问题,所以我现在更喜欢自己调整)。 VS Code 可能会安装一些意想不到的东西,尽管我很惊讶 python2.7 没有随 Ubuntu 18.04 一起提供。据我所知,他们只打算在下一个版本中切换到 python3。
    • 我不认为它们有任何冲突,我只是感到困惑,但现在我理解了 $PATH 的顺序,为什么 /usr/bin 中的 simlink 看起来“错误”是有道理的。他们没有错,只是 /home/user-name/anaconda3/bin 优先于 /usr/bin 中的任何内容。我也对默认未安装 Python 2.7 感到惊讶(我最近才切换到 Ubuntu 18.04),但此链接证实了这种情况:wiki.ubuntu.com/BionicBeaver/ReleaseNotes
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2018-09-13
    • 2015-11-13
    相关资源
    最近更新 更多