如何重新安装 python@2从家酿?

我对 openssl 和 python@2都有意见。记录在案的重新安装 Python 和 openssl 的解决方案不起作用,所以我决定卸载并重新安装 Python。

问题是,当您尝试使用 brew 安装 Python2时,会收到以下消息:

brew install python@2
Error: No available formula with the name "python@2"
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
git -C "$(brew --repo homebrew/core)" fetch --unshallow


python@2 was deleted from homebrew/core in commit 028f11f9e:
python@2: delete (https://github.com/Homebrew/homebrew-core/issues/49796)
EOL 1 January 2020.
We gave it 1 month more to live so that people had time to migrate.
All in all, developers had 11 years to do their migration.
You can use the `brew extract` command and maintain python@2 in your own
tap if necessary:
https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap


To show the formula before removal run:
git -C "$(brew --repo homebrew/core)" show 028f11f9e^:Formula/python@2.rb


If you still use this formula consider creating your own tap:
https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap

不幸的是,我还有一些依赖于 Brew 的 python@2的酿酒公式。这些包括 awscliletsencrypt,pr sshuttle

aws
zsh: /usr/local/bin/aws: bad interpreter: /usr/local/opt/python@2/bin/python2.7: no such file or directory

我不知道如何使用他们记录的 brew extract命令重新安装 Python@2。它需要配方和水龙头。我想公式应该是 python@2。我不确定监听器是什么。

此外,重新安装水龙头,如 awsletsencrypt也不是工作得很好。

在重新安装 awscli(brew reinstall awscli)之后,运行 aws 命令仍然会出现错误。

aws
/usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="?
if x is 0 or x is 1:
/usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="?
if x is 0 or x is 1:
/usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="?
elif y is 0 or y is 1:
/usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="?
elif y is 0 or y is 1:
/usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:260: SyntaxWarning: "is" with a literal. Did you mean "=="?
if original_result is 0:
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:


aws help
aws <command> help
aws <command> <subcommand> help
aws: error: the following arguments are required: command
150435 次浏览

看起来,自制的工作人员确实使得在 macOS 上尽可能地使用 Python 2.7变得很困难。

  1. 链接的 brew extract链接真的没有帮助,您需要在这里寻找答案,关于如何使您自己的水龙头从提取的来源。
  2. 链接提交: 028f11f9e 是错误的,因为它包含已经删除的文件。
  3. brew extract命令 甚至都不能正常工作,因为包名中有@。

解决方案非常简单,只需下载最新的已知提交并从该文件安装:

cd ~
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/python@2.rb
brew install python@2.rb
rm python@2.rb

可能会有关于这种情况“不稳定”的警告,我不能理解为 Git 历史中的提交已经非常稳定了。

请检查以下命令(我在 macOS 10.13上使用它,对于一个新的 macOS,它可能不需要源代码编译就可以工作) :

brew install pr0d1r2/python2/python@2.7.17 --build-from-source

如何从本地水龙头安装 python@2

以下方法适用于 brew的当前版本(c9b8a3ef6) :

$ brew tap-new <user>/homebrew-python2
$ brew extract python@2 <user>/homebrew-python2
$ brew install /usr/local/Homebrew/Library/Taps/<user>/homebrew-python2/Formula/python@2.7.17.rb

brew tap-new命令在 /usr/local/Homebrew/Library/Taps/<user>/homebrew-python2中创建一个新的本地轻击模板。龙头名称需要一个 <user>和一个由 /分隔的 <repo>组件。实际值是任意的。上面的命名遵循 如何创建和维护水龙头的约定。如果你想点击 GitHub,你可以使用你的 GitHub 用户名作为用户。不需要推到 GitHub (并且在上面的说明中没有执行)。

brew extract命令将公式的最新版本从回购历史中提取到给定的(本地)点击中。在我们的例子中,提取了 python@2.7.17.rb

brew install命令最终安装公式。

为什么要这样?

上面讨论的方法(从 GitHub 提交 URL 安装旧版本的公式)不再适用于当前版本的 brew(c9b8a3ef6)的 python@2,它会产生以下错误:

$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/python@2.rb
Updating Homebrew...
==> Auto-updated Homebrew!
Updated Homebrew from 88f17b8b6 to c9b8a3ef6.
...
Error: Calling Installation of python@2 from a GitHub commit URL is disabled! Use 'brew extract python@2' to stable tap on GitHub instead.

您可以使用 pyenv安装 python:

brew install pyenv
pyenv install 2.7.18

可选地将其设置为全局默认值:

pyenv global 2.7.18

关于为什么使用 pyenv比使用 brew管理 Python 安装更好的一篇很好的文章

要使 python二进制文件全局可用,请将 shims 添加到 PATH:

PATH=$(pyenv root)/shims:$PATH

为子孙后代准备 MacOS 10.15(2021年5月) :

/usr/local/bin/brew tap-new ${USER}/homebrew-python2


/usr/local/bin/brew extract python@2 ${USER}/homebrew-python2


/usr/local/bin/brew install /usr/local/Homebrew/Library/Taps/${USER}/homebrew-python2/Formula/python@2.7.17.rb


# https://github.com/Homebrew/brew/issues/5734#issuecomment-464705002
/usr/local/bin/brew untap ${USER}/python2

我使用这个页面中的方法在 Mac 上安装了 Python 2.7一年。 但是2021年5月,我尝试了这个页面上的大多数建议,但都失败了。

也许 Python 2.7越来越难安装了,或者是我的新 MacOS Big Sur 11.4导致了这个问题。

通过重用原生的 Python 2.7.16,我能够以这种方式设置一个工作的 Python 2.7环境

  • 手动安装管道
  • 设置虚拟环境
  • 在虚拟环境中使用 pip 安装依赖项

以下是安装步骤:

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
pip install virtualenv
~/Library/Python/2.7/bin/pip  install virtualenv
virtualenv --python=/usr/bin/python venv
source venv/bin/activate

这个页面上的所有答案都不适用于蒙特雷的 meabc 0。如果这对任何人都有帮助,这里有一个替代方案,从技术上来说,它并不是直接通过家酿安装的-只是间接的。

对我来说,一个简单的解决方案就是通过 Homewbrew 安装 水蟒,然后为 Python 2.7创建一个虚拟环境。

注意: 安装 Anaconda 将占用您计算机上的一些空间,而不仅仅是通过 Homebrew 或 Pyenv 安装 Python 2.7:

Anaconda 是 Python 和 R 编程语言的发行版 用于科学计算(数据科学,机器学习应用, 大规模的数据处理、预测分析等) 该发行版包括适用于 Windows、 Linux 和 macOS 的数据科学软件包。 Https://en.wikipedia.org/wiki/anaconda_(python_distribution)

基本上,步骤如下-但是您可能希望参考完整的安装指南以了解更多细节。

安装自制的水蟒:

brew install --cask anaconda

安装后,在您选择的文件夹中为 Python 2.7创建一个虚拟环境,在本例中为 Python 2.7.18创建:

conda create --prefix=/MY_FOLDER/NAME_OF_ENVIRONMENT python=2.7.18

你可以列出环境:

conda env list

通过以下方式激活环境:

conda activate NAME_OF_ENVIRONMENT

现在您可以像往常一样使用 pip install <package>或者 conda install <package>安装软件包等。

注意: 如果您的 Anaconda 安装是新的,

  1. 在激活虚拟环境之前,可能会提示您运行一次 conda init

  2. 您可能必须运行以下命令才能找到虚拟环境(例如通过 conda list env) ,它将在 ~/.condarc中添加一行:

    conda config --append envs_dirs /MY_FOLDER/NAME_OF_ENVIRONMENT

  3. 如果您对打开终端时可能显示“ Py base”的文本感到厌烦,请按照这个 回答执行以下操作,这将在 ~/.condarc中添加一行:

    conda config --set auto_activate_base false

  4. 一旦你激活了环境,为了缩短它在终端激活时出现的路径,将这一行添加到 ~/.condarc:

    env_prompt: ({name})


1 我不确定这是否是因为在我的 Mac 上与 Python 安装相关的一些东西坏了——所以你可能不会遇到同样的问题。但是我遇到了所有解决方案的问题: 从安装本地 MacOS Python 的 virtualenv到尝试通过 pyenv安装2.7.18的构建错误,brew extract方法也失败了等等。

这应该能行! ! !

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
pip install virtualenv # This will not work, use below
~/Library/Python/2.7/bin/pip  install virtualenv
~/Library/Python/2.7/bin/virtualenv --python=/usr/bin/python venv_twisted
source venv_twisted/bin/activate

对于这里显示的 在苹果移除了 macOS 12.3中的系统 python 之后,下面介绍如何安装和运行 python2和 python3。

巨蟒2

pythonpython2-> python 2.7

# Download/run the legacy macOS installer (pick which one for your sys)
https://www.python.org/downloads/release/python-2716/


# Add pip for python2.7
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip2.py
python2 get-pip2.py


# Optionally check for pip updates (in case of post-eol patches)
python2 -m pip install --upgrade pip


# Optionally add the helpers like easy_install back onto your path
# In your ~/.zprofile or whatever bash/shell profile equivalent
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH


# Optionally add some helpers while editing shell profile
alias pip2="python2 -m pip"
alias venv2="virtualenv -p python2"
alias venv3="virtualenv -p python3"


# Optionally some apple-specific std libraries are missing, search
# and download them. Example: plistlib.py
curl https://raw.githubusercontent.com/python/cpython/2.7/Lib/plistlib.py -o /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py


# Lastly, there is no symlink /usr/bin/python anymore
# /usr/bin is system protected so you can't add one either
#
# Change your programs to use /usr/local/bin/python
# or google how to disable macOS SIP to make a symlink in /usr/bin

巨蟒3

python3-> 巨蟒3

brew update
brew install python3


# Add pip for python 3 in case it is missing
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py


# Check for pip updates
python3 -m pip install --upgrade pip


# Optionally add a helper in ~/.zprofile
alias venv3="virtualenv -p python3"

测试一下

~ % python --version
Python 2.7.18


~ % python2 --version
Python 2.7.18


~ % python3 --version
Python 3.9.10


# Running older python2
python2 -m pip install...
python2 ...


# Testing the venv2 alias from above
venv2 foo
source foo/bin/activate
pip -V # pip 20... from... python2.7
pip install -y -r req.txt
pip uninstall -y -r req.txt
pip freeze
deactivate


# Testing the venv3 alias from above
venv3 foo3
source foo3/bin/activate
pip -V # pip22... from ...python3.9
pip install -y -r req.txt
pip uninstall -y -r req.txt
pip freeze
deactivate

通过卸载/重新安装进行故障排除

# Credit to https://www.macupdate.com/app/mac/5880/python/uninstall
# for many of the tips in this section.


# Sometimes there are problems related to accepting xcode
# tool agreement. Open XCode to make sure it finished
# installing its tool updates.


# Remove old python Application installs
# open the apps dir and delete Python 2, 3 via Finder
open /Applications


# Remove old brew installs
brew list | grep python
brew uninstall python
brew uninstall python3


# find/remove lingering unlinked kegs
ls /usr/local/Cellar/ | grep python


# Cleanup binaries
sudo rm -rf /Library/Frameworks/Pyth*
rm /usr/local/bin/pip*


# Cleanup symlinks
which -a python # check results, and rm each one
which -a python2 # check results, and rm each one
which -a python3 # check results, and rm each one


brew cleanup # prunes symlinks

不是关于使用家酿,而是 asdf-python对我来说完美无缺,因为我可以从中安装和使用 Python 2.7.18。(我的系统 M1 Max MBP with MacOS 12.3,这个最受欢迎的答案在我的系统上似乎失败了。其他一些答案似乎也令人费解,不起作用。)

我在 m1(12.3.1)上的工作:
不要使用酿造,直接从 Python 官方网站下载。
这个问题困扰了我很长时间:

我在使用 brew 时出现了错误,无法安装。

错误: 不支持从 GitHub 提交 URL 安装 python@2!取而代之的是,在 GitHub 上通过一个稳定的水龙头酿造提取 python@2。

您可以直接从他们的站点 版本2.7.18下载 python,并获得可用版本 点击这里的列表

如果只想让 python2在 Mac 上工作,最有效的方法是访问 https://www.python.org/downloads/并下载这个版本的 python 的 pkg。

看来自制程序不再支持 python2了。

最好的问候。