如何更新 macOS Python 包

paa*_*nnd 3 python macos terminal powerline macos-sierra

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

/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/lib/python3.5/site-packages/powerline/bindings/zsh/powerline.zsh:204:/usr/local/bin/powerline-config:坏解释器:/usr/local/opt/python3/bin/python3.5:没有这样的文件或目录'

我将其作为问题powerline发布到GitHub 页面,并被告知我可能在不知不觉中更新了 macOS 上的 Python 版本(通过或可能通过系统更新,因为我是 macOS Beta 用户)。homebrew

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

操作系统:macOS 10.12.3 测试版

任何帮助,将不胜感激!

——帕安万德

bna*_*ker 5

我认为 GitHub 页面的诊断powerline是正确的:您通过 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)
Run Code Online (Sandbox Code Playgroud)

现在这对您来说不是很有帮助,因为您已经升级而没有保留此列表。一种选择是通过 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 安装的软件包列表,然后手动安装它们。最好的办法是选择一个具有大量依赖项的软件包,这样您就可以一次安装许多软件包。

  • 感谢您快速且内容丰富的回复!我还没有执行“brew cleanup”,所以我能够“切换”回来,并且目前正在重新安装旧的软件包。:+) (2认同)