【问题标题】:Switch between python 2.7 and python 3.5 on Mac OS X在 Mac OS X 上的 python 2.7 和 python 3.5 之间切换
【发布时间】:2016-04-13 07:46:11
【问题描述】:

我通常使用 Python 2.7,但最近在 Mac OS X 上使用 Miniconda 安装了 Python 3.5。为这两个版本的 python 安装了不同的库。现在,在终端中输入关键字 'python' 或 'python3' 会调用 python 3.5,并且 'python2' 返回 '-bash: python2: command not found'。我现在如何分别使用别名“python2”和“python3”专门调用它们?

我目前正在使用 OS X El Capitan。

【问题讨论】:

  • 你试过python -2吗?
  • 听起来你应该用 Miniconda 打开一个错误报告,说明他们没有关注PEP-0394
  • 在它们之间切换是什么意思?您是否希望能够在需要时专门调用 Python 2,并在需要该版本时专门调用 Python 3?您可以使用别名python2python3 来做到这一点(如果这是您想要的并且您相应地编辑您的问题,我会将其作为答案发布)。或者您想在输入python 时切换实际运行的 Python 版本?
  • 即使您能够运行python2,您也可能需要为 python 2 重新安装东西,看来...

标签: python macos python-2.7 python-3.x terminal


【解决方案1】:

恕我直言,在 macOS 上使用两个不同 Python 版本的最佳方式是通过homebrew。在 macOS 上 installing homebrew 之后,在终端上运行以下命令。

brew install python@2
brew install python

现在您可以通过调用python2 运行Python 2.7 或通过调用python3 运行Python 3。除此之外,您还可以使用virtualenvpyenv 来管理不同版本的python 环境。

我从未亲自使用过miniconda,但从the documentation, 看来,它类似于使用pipvirtualenv 组合使用。

【讨论】:

  • 现在如何为 python2 安装东西?
  • pip2 安装
【解决方案2】:

OSX 的 Python 二进制文件(版本 2)位于 /usr/bin/python

如果你使用which python,它会告诉你python 命令被解析到哪里。通常情况下,第三方会重新定义/usr/local/bin 中的内容(默认情况下优先于/usr/bin)。要修复,您可以直接运行 /usr/bin/python 以使用 2.x 或找到错误的重新定义(可能在 /usr/local/binPATH 的其他地方)

【讨论】:

  • 但是,我正在寻找创建别名的方法,比如 python2 调用 Python 2 和 python3 调用 Python 3。你能给我一些关于这个方向的信息吗?谢谢。
【解决方案3】:

我已经安装了python3(通过miniconda3)并且需要同时安装python2,在这种情况下brew install python不会安装python2,所以你需要 brew install python@2.

现在别名 python2 指的是来自 /usr/bin/python 的 python2.x

别名python3指的是/Users/ishandutta2007/miniconda3/bin/python中的python3.x

而别名python默认指的是python3。

现在要使用python 作为python2 的别名,我将以下内容添加到.bashrc 文件中

alias python='/usr/bin/python'

要默认返回 python3,只需在需要时删除此行。

【讨论】:

    【解决方案4】:

    如果您在 MacOS High Sierra 10.13.5 上安装了 Anaconda3 (Python 3.6),如何将 python 版本设置回 2.7

    编辑主目录中的 .bash_profile 文件。

    vi $HOME/.bash_profile

    散列 #export PATH="/Users/YOURUSERNAME/anaconda3/bin:$PATH"

    关闭 shell 再次打开你应该在运行 python 时看到 2.7。

    如果你想要 3.6,你可以简单地在你的 bash 配置文件中取消注释你的 anaconda3 行。

    在 Mac OSX 中尝试取消链接 python 会以泪水告终。

    你会是这样的

    取消链接:/usr/bin/python:不允许操作

    希望能帮助别人! :) :)

    【讨论】:

      【解决方案5】:

      与 John Wilkey 的回答类似,我会通过查找 which python 来运行 python2,例如使用 /usr/bin/python,然后在 .bash_profile 中创建 别名

      alias python2="/usr/bin/python"

      我现在可以通过调用python 运行python3 和通过调用python2 运行python2。

      【讨论】:

        【解决方案6】:

        我只是跟进@John Wilkey 的回答。

        我的别名python曾经代表python2.7(位于/usr/bin)。 但是,默认的 python_path 现在前面有 /usr/local/bin 用于 python3;因此在输入python 时,我没有得到python 版本。

        我尝试在/usr/local/bin 中为python2 创建一个链接:

        ln -s /usr/bin/python /usr/local/bin/

        在为python2 调用python 时有效。

        【讨论】:

          【解决方案7】:

          如果您想使用 Apple 的 Python 2.7 系统安装,请注意它并不完全遵循 PEP 394 中规定的命名标准。

          特别是,它包括您被告知不要依赖的带有后缀 2.7 的可选符号链接,并且不包括您被告知 应该 em> 依赖。


          如果你想解决这个问题,在坚持使用 Apple 的 Python 的同时,你可以创建自己的符号链接:

          $ cd <somewhere writable and in your PATH>
          $ ln -s /usr/bin/python python2
          

          或 bash 配置中的别名:

          alias python2 python2.7
          

          如果需要,您也可以对 Apple 的 2to3、easy_install 等进行同样的操作。

          您不应该尝试将这些符号链接放入 /usr/bin,并且绝对不要尝试重命名已经存在的内容,或者将 distutils 设置更改为更符合 PEP 的内容。这些文件都是操作系统的一部分,并且可以被操作系统的其他部分使用,即使是从 10.13.5 到 10.13.6 或其他版本的小更新,您的更改也可能会被覆盖,因此请不要理会它们并解决它们如上所述。


          或者,您可以:

          • 只需在命令行和 shbang 等中使用 python2.7 而不是 python2
          • 使用虚拟环境或 conda 环境。当您始终使用激活环境的本地 python 时,全局 pythonpython3python2 等无关紧要。
          • 正如大多数其他答案所暗示的那样,停止使用 Apple 的 2.7,而是在其旁边安装一个完整的其他 2.7。 (我不知道为什么这么多人还建议您安装第二个 3.6。这只会增加更多的混乱,没有任何好处。)

          【讨论】:

            猜你喜欢
            • 2017-03-13
            • 2018-12-24
            • 1970-01-01
            • 2011-04-18
            • 2017-12-17
            • 2012-08-24
            • 2017-06-10
            • 1970-01-01
            相关资源
            最近更新 更多