Как обновить пакеты MacOS Python

В последнее время я получаю следующее уведомление каждый раз, когда запускаю Терминал:

/usr/local/lib/python3.5/site-packages/powerline/bindings/zsh/powerline.zsh:200: /usr/local/bin/powerline-config: плохой интерпретатор: /usr/local/opt/python3/ bin/python3.5: нет такого файла или каталога интерпретатор: /usr/local/opt/python3/bin/python3.5: нет такого файла или каталога

Я разместил это на powerline странице GitHub как проблему, и мне посоветовали что я, вероятно, обновил свою версию Python в macOS без моего ведома (через homebrew или, возможно, через системное обновление, поскольку я являюсь пользователем бета-версии macOS).

Есть ли способ массово обновлять пакеты Python в macOS, как в Gentoo, как указано в связанной проблеме GitHub? Разработчик упомянул, что в Gentoo есть скрипт python-updater, который используется для обновления пакетов после обновления Python, но для macOS такого скрипта не существует.

ОС: macOS 10.12.3 бета

Любая помощь будет оценена по достоинству!

-- паанваанд


person paanvaannd    schedule 04.01.2017    source источник


Ответы (1)


Я думаю, что диагноз со страницы powerline GitHub верен: вы обновили Python 3.5 до 3.6 через Homebrew, так что вещи, ожидающие интерпретатора 3.5, не работают. Я делал это пару раз.

Лучший способ, который я нашел, чтобы все было в порядке, — это сохранить список установленных пакетов, удалить их, обновить Python через Homebrew, а затем переустановить список пакетов. В оболочке это будет:

$ pip3 list | cut -d " " -f 1 > package-list.txt # Store package names without versions
$ pip3 uninstall -y $(cat package-list.txt) # Cannot use redirection
$ brew update && brew upgrade python3
$ pip3 install $(cat package-list.txt)

Это не очень полезно для вас сейчас, потому что вы уже обновились без сохранения этого списка. Один из вариантов — откатить установку Python через Homebrew. Если вы еще не сделали brew cleanup, вы можете сделать brew switch python3 3.5.x (где x — это последняя версия, которая у вас была). После этого вы можете выполнить описанную выше процедуру, поменяв местами brew upgrade python3 на brew switch python3 3.6.0.

Если вы очистили предыдущую установку, вы можете попробовать переустановить ее, используя этот ответ, а затем выполните вышеуказанное.

Если оба они не работают, вы можете просто вручную переустановить свои пакеты. Посмотрите, что находится в /usr/local/lib/python3.5/site-packages/, чтобы получить список пакетов, которые вы установили через Pip, и установите их вручную. Лучше всего выбрать пакет с большим количеством зависимостей, чтобы установить сразу много пакетов.

person bnaecker    schedule 04.01.2017
comment
Спасибо за быстрый и информативный ответ! Я еще не выполнял brew cleanup, поэтому смог switch вернуться и в настоящее время заново устанавливаю старые пакеты. :+) - person paanvaannd; 05.01.2017