Заваривать - переустанавливать python@2 - PullRequest
15 голосов
/ 19 февраля 2020

У меня были проблемы с 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

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

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

1 Ответ

59 голосов
/ 21 февраля 2020

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

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

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

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

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

...