删除某些内容后如何在 OS X Yosemite 上恢复 python?

2024-01-30

我想我之前是通过homebrew安装了python。这不是一个好主意,但我做到了:

$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ sudo rm -R /Library/Frameworks/Python.framework/Versions/2.7/bin/python

..然后终端告诉我...

$ which python
/usr/local/bin/python

但是当我再次运行 python 时

$ python
-bash: /Library/Frameworks/Python.framework/Versions/2.7/bin/python: No such file or directory

所以我这样做了:

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

现在 python 确实在我的终端上运行,但我想知道是否最好将某些内容放回我删除它的位置,以及如何“恢复”python 在我弄乱它之前的状态?

Thanks!


你这里有很多问题。

让我们从这个开始:

/Library/Frameworks/Python/2.7既不是 Apple Python,也不是 Homebrew Python。你显然安装了一个thirdPython,可能来自官方 python.org 二进制安装程序。删除该选项不会影响 Homebrew 版本。

/usr/local/bin/python也不是Apple Python。它可能是指向您的第三个 Python 或 Homebrew Python 的符号链接,但它不是来自 Apple。

以下是每个 Python 的运行位置:

  • Apple 的 Python 已在/System/Library/Frameworks/Python/2.7。它还包括各种包装可执行文件/usr/bin, 包括/usr/bin/python,该点在/System框架。使用该 Python 安装的任何额外内容(例如,通过easy_install or pip),包括可执行文件或脚本将进入/usr/local/bin, not /usr/bin,但苹果预装的东西从来不会。

  • 大多数第三方二进制安装程序安装到/Library/Frameworks/Python/2.7。不同版本可以选择添加框架的bin目录到您的路径,或将二进制文件符号链接到/usr/local/bin.

  • Homebrew 安装到类似的地方/usr/local/Cellar/python/2.7.8,然后将各种可执行文件和脚本符号链接到/usr/local/bin.

所以,事实上,你正试图通过确保回到 Apple Python/usr/local/bin在你的 PATH 上已经朝着错误的方向前进了。


同时,永远不要手动删除 Homebrew 安装的东西,除非brew doctor告诉你。只需使用brew uninstall python—或者,如果您想暂时将其移开,并可以选择稍后恢复,brew unlink python.


最后,即使在改变你的PATH,shell 可能已经缓存了要查找的最佳位置python,所以要么阅读hash命令,或者,如果您不想了解有关 bash 的更多信息,只需确保打开一个新 shell(例如,通过在 Terminal.app 中打开一个新选项卡)。


无论如何,你怎样才能回到原来的地方呢?

您需要彻底卸载both额外的Python。我已经解释了如何使用上面的 Homebrew 来做到这一点。对于第三个,你已经完成了大部分工作,但显然还有一些东西被遗漏了/usr/local/bin。如果它们都是悬挂的符号链接,就像最有可能的那样,您可以很容易地找到它们,例如,ls -l /usr/local/bin |grep /Library/Frameworks/Python.framework |grep -v /System.

完成后,只需启动一个新的 shell,然后which python应该告诉你/usr/bin/python,一切都会再次幸福。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除某些内容后如何在 OS X Yosemite 上恢复 python? 的相关文章

随机推荐