Brew - переустановка python @ 2

14

У меня были проблемы с openssl и python @ 2 с brew, которые объяснили здесь (неразрешенные) . Документированный обходной путь переустановки Python и openssl не работал, поэтому я решил удалить и переустановить Python.

Проблема в том, что при попытке установить Python 2 с помощью brew вы получаете следующее сообщение:

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, которые зависят от питона Brew @ 2. Они включают в себя awscli, letsencrypt, пр 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. Я не уверен, каким должен быть кран.

Кроме того, переустановка кранов, например, 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
Паулина
источник

Ответы:

54

Похоже, что персонал, работающий на доморощенном деле, делает все возможное, чтобы использовать Python 2.7 на macOS настолько сложно, насколько это возможно.

  1. Связанный brew extract ссылка действительно не помогает, вы должны искать ответы здесь о том , как сделать свой собственный кран из извлеченных источников.
  2. Связанный коммит: 028f11f9e неверен, так как содержит уже удаленный файл.
  3. brew extractКоманда даже не работает правильно , из-за @ в имени пакета.

Решение очень простое, вам просто нужно установить из последней известной фиксации:

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

Есть предупреждение о том, что это «нестабильный», что я не понимаю, так как коммит в истории Git настолько стабилен, насколько вы можете получить.

hyperknot
источник
1
Просто поместите ссылку на PR здесь, где был удален python @ 2 (объединено 4 февраля 2020 г.) github.com/Homebrew/homebrew-core/pull/49796
petschki
@petschki не ответ, который мы просили, но ответ, который мы хотели знать!
ThinkBonobo