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

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.提问水平真的很拙计,希望大家能看得懂!


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


mac下推薦安裝pyenv


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


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

brew uninstall python
brew install python

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

【热门文章】
【热门文章】