Brew - reinstalar python @ 2

14

He estado teniendo problemas con openssl y python @ 2 con brew, que he explicado aquí (sin resolver) . La solución documentada para reinstalar Python y openssl no funcionaba, así que decidí desinstalar y reinstalar Python.

El problema es que, cuando intenta instalar Python 2 con brew, recibe este mensaje:

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

Lamentablemente, todavía tengo varias fórmulas de preparación que dependen de la pitón de Brew @ 2. Estos incluyen awscli, por ejemplo letsencrypt, prsshuttle

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

No sé cómo usar este brew extractcomando que documentaron para reinstalar Python @ 2. Necesita una fórmula y un toque. Me imagino que la fórmula sería python@2. No estoy seguro de cuál debería ser el grifo.

Además, reinstalar los grifos como awso letsencryptno funciona muy bien tampoco.

Después de reinstalar awscli( brew reinstall awscli), ejecutar los comandos aws aún genera errores.

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
Paulina
fuente

Respuestas:

54

Parece que el personal de homebrew realmente hace que sea lo más difícil posible usar Python 2.7 en macOS.

  1. El brew extractenlace vinculado realmente no es útil, debe buscar respuestas aquí sobre cómo hacer su propio toque de las fuentes extraídas.
  2. El commit vinculado: 028f11f9e es incorrecto, ya que contiene el archivo ya eliminado.
  3. El brew extractcomando ni siquiera funciona correctamente , debido a la @ en el nombre del paquete.

Sin embargo, la solución es muy simple, solo necesita instalar desde la última confirmación conocida:

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

Hay una advertencia acerca de que esto es "inestable", que no entiendo ya que un commit en un historial de Git es lo más estable posible.

hipernudo
fuente
1
Solo pongo el enlace al RP aquí, donde se eliminó python @ 2 (se fusionó el 4 de febrero de 2020) github.com/Homebrew/homebrew-core/pull/49796
petschki
@petschki no es la respuesta que pedimos, ¡sino la respuesta que queríamos saber!
ThinkBonobo