Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reinstall python@2 from Homebrew?

I have been having issues with openssl and python@2 with brew, which have explained here (unresolved). The documented workaround to reinstall Python and openssl was not working, so I decided I would uninstall and reinstall Python.

The problem is, when you try to install Python 2 with brew, you receive this message:

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/[email protected]  If you still use this formula consider creating your own tap:   https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap 

Unfortunately I still have a number of brew formulas that depend on Brew's python@2. Those include awscli, letsencrypt, pr sshuttle for example

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

I don't know how to use this brew extract command they documented to reinstall Python@2. It needs a formula and a tap. I imagine the formula would be python@2. I'm not sure what the tap would need to be.

Additionally reinstalling the taps such as aws or letsencrypt is not working very well either.

After reinstalling awscli (brew reinstall awscli), running aws commands still gives errors.

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 
like image 203
Pauline Avatar asked Feb 19 '20 10:02

Pauline


People also ask

Where is Python 2 installed Mac?

After downloading the installer run it to install Python 2. This will automatically install Python in /usr/local/python as well.


1 Answers

It seems that the homebrew staff really makes it as hard as possible to use Python 2.7 on macOS as they can.

  1. The linked brew extract link is really not helpful, you need to look for answers here about how to make your own tap from extracted sources.
  2. The linked commit: 028f11f9e is wrong, as it contains the already deleted file.
  3. The brew extract command doesn't even work correctly, because of the @ in the package name.

The solution is very simple though, you just need to download the latest known commit and install from that file:

cd ~ wget https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/[email protected] brew install [email protected] rm [email protected] 

There might be a warning about this being "unstable", which I don't understand as a commit in a Git history is as stable as you can get.

like image 60
hyperknot Avatar answered Oct 14 '22 14:10

hyperknot