Mac升级Python内置版本后部分模块无法使用,因包安装的位置不同导致无法正常运行?是否替换包的软链接解决?

犹豫了一段时间是否更新Mac OS X内置的Python2.7.5 最后在还是更新到了2.7.7版本然后一系列的问题来了。
easy_install、pip、Scrapy、Django这些包都无法正常在终端下执行。
例如一哥们的Mac下Python2.7使用pip报错File "/usr/local/bin/pip", line 5, in <module>错误,我也检查了一遍。发现重装后也不可以,在PyCharm下将更新后的Python路径修复一下就可以正常使用了,但是非常奇怪的一点,无论我怎么卸载重装第三方包也好。就是不见Python的包在/Library/Python/2.7/site-packages/路径内,看到的只有之前内置2.7.5的包,就纳闷了半天还没想到问题。
想了一下执行比如easy_install的时候按照Windows的尿性还要加环境变量,那么我检查了一遍/usr/bin/目录是正常存在easy_install的。那么我在终端执行的结果是这样:

python version 2.7.7 can't run /usr/bin/easy_install.  Try the alternative(s):

(Error: no alternatives found)

Run "man python" for more information about multiple version support in
Mac OS X.

这样的问题我也检查了一遍,这个是原本未升级时2.7.5遗留下来的,并没有做过任何处理。

我在这里思考了一下,发现更新Python2.7.7之后所有的包都安装在了:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/里面,我是不是认为我在更新完后执行easy_install的时候执行的并不是Python2.7.7里面的包?而是Python2.5.5里面的easy_install

如果是这样,那么理论上我的解决方法是不是可以这样:
将所有以前遗留的包软链接重新链接一次?

sudo rm -rf /usr/bin/easy_install
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/easy_install.py /usr/bin/easy_install

然后将以前的/Library/Python/2.7/site-packages/包删除掉?或者无视它的存在~

重点是,我将Python更新了,然后将包得软链接比如easy_install、pip、Django、Scrapy这样的包替换掉?是否就完美解决掉Mac OS X下的Python更新?
Ps.提问水平真的很拙计,希望大家能看得懂!

阅读 16.7k
5 个回答

Mac OS X下不建议升级内置的Python、Ruby跟Perl,血和泪的教训。

呃。好悲催。
用 homebrew 吧。
先用 homebrew 卸载 Python ,再安装。

brew uninstall python
brew install python

正好从现在起开始用virtualenv。从此你不用考虑系统的python版本了。

mac下推薦安裝pyenv

You should always use virtualenv as your python runtime.

pip install virtualenv

virtualenv env

source env/bin/active

If not, at least you should use pyenv:

pyenv

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题