如何更新macOS Python包

时间:2017-01-04 18:07:32

标签: python macos terminal macos-sierra powerline

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

  

/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:没有这样的文件或目录   /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:没有这样的文件或目录'

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

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

OS:macOS 10.12.3 Beta

任何帮助将不胜感激!

- paanvaannd

1 个答案:

答案 0 :(得分:3)

我认为来自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交换。

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

如果两者都失败,您只需手动重新安装软件包即可。查看/usr/local/lib/python3.5/site-packages/中有关通过Pip安装的软件包列表的内容,并手动安装。最好的方法是选择一个具有大量依赖关系的,以便一次安装许多包。