倒霉,最好不要使用Mac系统默认下的python

2022-08-08 08:21:00 浏览数 (1)

最近,用Mac系统开发了一阵以后,一些软件开始崩溃,找了一下原因,原来是我乱升级系统包导致的,我们都知道,OSX系统默认是开发者友好的,python当然必须系统自带的。

但是网上又有很多教程,如何在mac系统中安另一个python,原因就是系统自带的python运行运行普通脚本没问题,但是真的开发python项目是有点问题的。

系统自带的python可能会版本偏低,这个如果大家都是用最新系统应该都没啥问题了。

系统升级的时候,可能会导致已经安装的python包消失。

最后也是最重要一点,系统python默认安装了一些python packages,导致我们自己安装升级这些库的时候很困难。

系统python默认安装的库在哪里?

我们都知道,python查找库路径使用的是sys.path

那么我们来看看系统python的sys.path

$ /usr/bin/python

Python 2.7.5 (default, Mar  9 2014, 22:15:05)

[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> print 'n'.join(sys.path)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload

/Users/mb312/Library/Python/2.7/lib/python/site-packages

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC

/Library/Python/2.7/site-packages

重点可以看这两个路径:

1. 路径一:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

2. 路径二:/Library/Python/2.7/site-packages

如果你的系统是10.9以上的话,你应该可以看到路径一中,已经安装了很多库。 如果我们自己安装的库的话,会被安装在路径二中。 有意思的是,路径一在路径二上面,优先级要高,意味着我们自己无论如何安装也没办法升级默认安装好的库。

唯一的办法可能就是删除系统默认的库文件,等等,删除真的可以么?

OSX系统为什么要安装一些默认库?

因为OSX系统中有一些系统任务是使用系统python运行的。如果我们随意修改这个默认python或者默认python库版本,都可能会导致一些意想不到的系统错误。

要么重新安装一个python,要么使用virtualenv

重新安装

这里就不多说了,网上教程很多下面,列举几个。值得注意的是,千万别把/usr/bin/python改成自己的。最好的办法是修改自己的.profile. 增加如下脚本:export PATH=/usr/local/bin:/usr/local/sbin:$PATH

0 人点赞