如何使用 Homebrew 在 Mac 上同时安装 Python 2 和 3?

Posted

技术标签:

【中文标题】如何使用 Homebrew 在 Mac 上同时安装 Python 2 和 3?【英文标题】:How can I use Homebrew to install both Python 2 and 3 on Mac? 【发布时间】:2013-09-11 08:23:18 【问题描述】:

我需要能够在 Python 2 和 3 之间来回切换。我如何使用 Homebrew 来做到这一点,因为我不想弄乱路径并陷入麻烦。 现在我通过 Homebrew 安装了 2.7。

【问题讨论】:

您可能想要更改问题以删除自制程序参考,因为它不一定是实现您的目标的必要条件(例如***.com/a/49091638/2923369,请参阅我的回答) 【参考方案1】:

我可以去https://www.python.org/downloads/mac-osx/ 下载最新的python。它安装在我系统中的当前 python 旁边。

【讨论】:

【参考方案2】:

有两种方法可以同时使用,但目前最简单的解决方案是使用pyenv。 pyenv 允许在版本之间轻松切换。 这是我所做的设置:

第 1 步:

从你的 mac 中删除所有的蟒蛇

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

~/.bash_profile中删除以下内容

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

还有来自~/.bashrc的以下内容

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

第二步

安装pyenv和你需要的python版本

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

第三步

pyenv init 添加到bash_profilebashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

第 4 步

检查安装了什么

pyenv versions

系统(由 /Users/ishandutta2007/.pyenv/version 设置)

2.7

3.7.0

第 5 步:

选择一个默认值

pyenv global 3.7.0

当项目需要旧版本时,只需进入其根文件夹并运行

pyenv local 2.7

【讨论】:

【参考方案3】:

目前 Homebrew 为 Python 2 和 3 提供了两种不同的公式。brew install python 安装 python3,brew install python@2 安装 python2。 Homebrew 文档中的更多详细信息:

https://docs.brew.sh/Homebrew-and-Python

如果您目前通过 Homebrew 安装了 2.x,Homebrew 会给您一条消息,例如:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

如果你运行:

brew upgrade python

你应该可以做到:

python --version

python3 --version

查看安装了哪些版本的 Python 2.x 和 3.x。

【讨论】:

【参考方案4】:

我以为我有相同的要求 - 在 Python 版本之间移动 - 但我通过从源代码构建而不是使用 homebrew,仅使用 Python3.6 就实现了我所需要的一切。

git clone https://git.<theThingYouWantToInstall>

根据 repo,检查是否已经为此选项设置了 MAKE 文件。

【讨论】:

【参考方案5】:

您可以同时安装两个版本。

对于 Homebrew >=1.5.0:

自 2018 年 3 月 1 日起,python 公式将升级到 Python 3.x,而新的 python@2 公式将特别针对 Python 2.7 添加。

请参阅changes announcement here 或final doc about using Homebrew for Python here。

对于较旧的 Homebrew:

对于 Python 2.x:

brew install python

对于 Python 3.x:

brew install python3

现在,您将在您的机器上安装这两个版本。如果要使用版本 2,请使用 python 可执行文件。如果要使用版本 3,请使用 python3 可执行文件。

【讨论】:

问题是关于使用两者 感谢更新!我遵循了类似的路线,但在每次更改时都必须设置 PYTHONPATH 时遇到问题……知道吗?除此之外,pyenv 很棒。 另外,请注意,将 python2 和 python3 并排放置,python 指向 python2,python3 指向 python3,如预期的那样。然而,一个很大的问题是 pip 并不像你想象的那样指向 pip2。它实际上指向 pip3 (显然 pip3 也是如此)。要使用 pip2,请明确使用 pip2。 python 的非数字后缀指向 2 但 pip 的非数字后缀指向 3 有点不一致。 这会弄乱 pip 等常见的可执行文件。在这种情况下,python3 将覆盖 python2 pip,这将是默认的“pip”命令 回应@kissgyorgy 的评论:我遇到了这个问题,关于这个问题的最后一条评论为我解决了github.com/Homebrew/legacy-homebrew/issues/50607,运行python3 -m pip install -U --force-reinstall pip 然后python -m pip install -U --force-reinstall pip 让事情回到拥有pip请参阅 Python 2 的 pip【参考方案6】:

使用asdf!

asdf 民谣

从前有一种编程语言 它有很多版本 所以人们为它写了一个版本管理器 在项目的版本之间切换 不同的,旧的,新的。

然后出现了更多的编程语言 于是出现了更多的版本管理器 还有很多命令给他们

我安装了很多 我学到了很多命令

然后我说,再多一个版本管理器 我会改写的

所以,出现了另一个版本管理器asdf 版本管理器 - https://github.com/asdf-vm/asdf

一个可扩展的版本管理器 任何人都可以为其创建插件 支持他们喜欢的语言 不再安装更多版本管理器 或者学习更多命令

https://github.com/asdf-vm/asdfhttps://github.com/tuvistavie/asdf-pythonhttps://github.com/asdf-vm/asdf-plugins

【讨论】:

在我看来,这些不是竞争工具,而是同一个工具,每种语言实现一次(有时不止一次)。有点像为什么我们也需要像 LSP 这样的东西,恕我直言。 microsoft.github.io/language-server-protocol/overview【参考方案7】:

好的,我正在为 Python3 的 brew 安装而苦苦挣扎,因为我没有 pip3

sudo pip3 command not found

所以我做到了

brew uninstall --force --ignore-dependencies python3

并从官方发行版安装了常规的 Python 3.6.2,然后我有了 pip3,所有组件都正常。

【讨论】:

OP 询问是否安装两者。【参考方案8】:

我会使用pyenv你可以安装它:

$ brew install pyenv

要在您的 Bash shell 中启用 pyenv,您需要运行:

$ eval "$(pyenv init -)"

要在 Bash 启动时自动执行此操作,请将该行添加到您的 ~/.bash_profile1

用法:

一旦你安装了pyenv并激活它,你就可以安装不同版本的python并选择你可以使用的那个。示例:

$ pyenv install 2.7.5

您可以检查您安装的版本:

$ pyenv versions

而且你可以通过命令在python版本之间切换:

$ pyenv global 3.3.1

您还可以为当前目录设置 python 版本:

$ pyenv local 3.5.2

你可以通过运行python --version来检查:

$ python --version
Python 3.5.2

1 Homebrew 曾经指示您在安装 pyenv 时执行此操作,但 the message was removed。对于 Zsh 和其他 shell,具体步骤可能不同。

【讨论】:

这是最简单的解决方案。我目前使用它在 Python 3 和 2.7.x 之间切换 如果我已经通过 homebrew 安装了 python 2.7,使用 pyenv 有什么需要注意的吗?我可以通过 pyenv 安装另一个 python 2.7 吗? 是的,您可以通过 pyenv 安装另一个 python 2.7。它将将该 python 安装在 $PYENV_ROOT/versions 中。通过 homebrew 安装的其他 python 2.7 可能在执行“pyenv 版本”时显示为“系统”。 我必须将 eval "$(pyenv init -)" 添加到我的 .profile/.zshrc 才能使 pyenv 正常工作。 @ilciavo,您可能需要将 eval "$(pyenv init -)" 添加到您的 ~/.bash_profile【参考方案9】:

或者,您也可以只输入“python3”来运行最新版本的 python3.x,输入“python”或“python2”来运行最新安装的 2.x 版本。

【讨论】:

以上是关于如何使用 Homebrew 在 Mac 上同时安装 Python 2 和 3?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Homebrew 和 pyenv 在 Mac 上安装 OpenCV 3 for Python 3

Mac上Homebrew的使用——Homebrew 使 OS X 更完整

在 MAC 上使用 Homebrew 安装 PHP

mac 上用homebrew安装完mysql后,怎样使用密码连接数据库

mac brew 怎么安装msql 5.5

mac利用套件管理工具homebrew正确地同时安装python2.7和python3