python - 如何从 Homebrew 重新安装 python@2?
问题描述
我在使用 brew 时遇到了 openssl 和 python@2 的问题,这里已经解释过了(未解决)。记录在案的重新安装 Python 和 openssl 的解决方法不起作用,所以我决定卸载并重新安装 Python。
问题是,当您尝试使用 brew 安装 Python 2 时,您会收到以下消息:
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 的 brew 公式。其中包括awscli
, letsencrypt
, prsshuttle
例如
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
. 我不确定水龙头需要是什么。
此外,重新安装水龙头,例如aws
或letsencrypt
也不能很好地工作。
重新安装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
解决方案
似乎自制软件的工作人员真的尽可能地在 macOS 上使用 Python 2.7。
- 链接的
brew extract
链接真的没有帮助,您需要在这里寻找有关如何从提取的资源中进行自己的点击的答案。 - 链接的提交:028f11f9e 是错误的,因为它包含已删除的文件。
- 由于包名称中的@,该
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 历史中的提交是尽可能稳定的。
推荐阅读
- ssh - macOS 终端,使用 Socks 代理连接到 SSH
- python - 如何展平参数列表?
- python-3.x - 如何在 Python 3 中编写主函数?
- sql - 如何计算不同时间的不同时间?
- ios - Xcode ScrollView 不滚动
- java - 如何从 updateBaseContextLocale 调用 getSharedPreferences
- r - 在文件中查找波斯语或非英语文本
- django - django中的中间模型或manytomanyfield?
- python - 如何在 Tensorflow 2.0 中定义我的 RNN 单元
- c# - Unity布尔值未显示在检查器视图中