如何更新 macOS Python 软件包

How to update macOS Python packages

我最近每次启动终端时都会收到以下通知:

/usr/local/lib/python3.5/site-packages/powerline/bindings/zsh/powerline.zsh:200: /usr/local/bin/powerline-config: bad interpreter: /usr/local/opt/python3/bin/python3.5: no such file or directory /usr/local/lib/python3.5/site-packages/powerline/bindings/zsh/powerline.zsh:204: /usr/local/bin/powerline-config: bad interpreter: /usr/local/opt/python3/bin/python3.5: no such file or directory'

我将此作为 an issue 发布到 powerline GitHub 页面,并被告知我可能已经在 macOS 上更新了我的 Python 版本我知道(通过 homebrew 或者可能通过系统更新,因为我是 macOS Beta 用户)。

有没有办法像在 Gentoo 中一样在 macOS 中更新 Python 软件包,如链接的 GitHub 问题中所指出的那样?开发者提到 Gentoo 中有一个 python-updater 脚本,用于在更新 Python 后更新软件包,但 macOS.

不存在这样的脚本

OS:macOS 10.12.3 测试版

如有任何帮助,我们将不胜感激!

-- paanvaannd

我认为 powerline GitHub 页面的诊断是正确的:您通过 Homebrew 将 Python 3.5 更新为 3.6,因此期望 3.5 解释器的东西坏了。我已经做过几次了。

我发现保持理智的最佳方法是存储已安装软件包的列表,删除它们,通过 Homebrew 更新 Python,然后重新安装软件包列表。在 shell 中,这将是:

$ 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)

这对您现在不是很有帮助,因为您已经升级而没有保留此列表。一种选择是通过 Homebrew 回滚 Python 安装。如果您还没有完成 brew cleanup,您可以完成 brew switch python3 3.5.x(其中 x 是您拥有的最新版本)。在此之后,您可以执行上述步骤,将 brew upgrade python3brew switch python3 3.6.0.

交换

如果您已经清理了以前的安装,您可以尝试使用 重新安装它,然后执行上述操作。

如果这两个都失败了,您可以手动重新安装您的软件包。查看 /usr/local/lib/python3.5/site-packages/ 中的内容以获取您通过 Pip 安装的软件包列表,然后手动安装它们。最好的办法是选择一个有很多依赖项的,这样你就可以一次安装很多包。