00.前言
MacOS 上的 Python不同版本的环境一直是个让人头大的问题,原因在于,系统预先安装了2.7版本,但这是个老版本了,老版本是不能卸载的,一些系统程序都在依赖它。
现在市面上开发的新程序多数在用3.x版本,部分老代码还在用2.x版本,两个大版本还是有些区别的,无法完全兼容,这就让管理多版本共存成了个问题。
当然,也有一些管理工具,如pyenv,但其实python的venv模块已经足够了,下面会简单说一说使用。
01.卸载干净
据不完全统计,目前发现了以下这些还算固定的安装目录:
自己安装的Python在这个目录,即通过官网下载的安装程序安装
/Library/Frameworks/Python.frameworkPython应用目录
/Applications/Python3.x通过brew命令安装在这个目录,brew是个包管理工具,使用它安装的都在Cellar目录
/usr/local/Cellar通过CommandLineTools安装在这个目录,这是个Xcode带的工具包
/Libaray/Developer/CommandLineTools/Library/Frameworks系统预安装的在这个目录,这个看看就行了,不能删
/System/Library/Frameworks/Python.framework
1 | $ which python |
通过这两个命令,找到python可执行程序
- /usr/local/bin,这个目录下的,可以删除
- /usr/bin,这个目录下的,想删也删不了,没权限。Catalina以下的通过关闭SIP可以操作/usr/bin目录下的文件,但以上的版本关掉SIP也不行了。我在早年间通过这种方式在/usr/bin目录下放了一个python3的可执行程序,现在升级到了Big Sur版本,导致这个可执行文件删不掉了,除了重装系统,我也没想到什么好办法,暂时就先这么放着。
终端窗口执行python会进入2.7的交互解释环境,执行python3会报错command not found
1 | $ python3 |
至此,现在系统里应该只剩下系统预安装的python2.7了,可执行文件在/usr/bin目录,同时/usr/local/bin目录不再有python可执行文件。
02.安装最新
直接用brew安装就好,别再用其他的各路神仙工具了,听我一句劝,不要在意别人怎么怂恿,就用brew就可以了,这个是macOS上最普遍、最通用的包管理工具,用最简单的方式做最大的事,多了不起。
如果不是新买的机器,应该都装了brew工具了,要是没装,那就先装一下,一行代码,等着就好了
1 | $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
如果发现访问困难,卡住、网速慢,可以使用国内镜像网站,下面这个是中科大的,速度还可以
1 | $ ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)" |
然后,安装python3,一行代码,还是等着就好了,python3有多个版本,3.6、3.7、3.8以及最新的3.9,不指定版本会默认安装最新,如果有需要,可以指定版本:python@3.x,如果同时存在多个3.x,要注意名字的区分
1 | $ brew install python3 |
这里唠叨几句pip,pip是python的包管理工具,前身是easy_install,这两者的关系是,python是可执行文件,pip是python的一个模块,可有也可无,非必需,建议还是用pip,毕竟其他方式管理包很麻烦。如果意外把pip删除了也可以单独安装
1 | # 安装 |
一个pip关联一个python可执行文件,像上面这样,就是将pip关联到了python3,通过这个pip安装的包只有python3可调用到,系统自带的python调用不到,如果有需要,也可以为系统python可执行文件也装个pip工具,但要注意名字的区分
1 | # 安装 |
03.日常使用
日常使用是通过venv模块,一般一个项目使用一个venv环境,互相独立、互不干扰。
这种模式,就像是在一座大房子(机器)里可以建造很多不同类型(版本)的小房间(虚拟环境),每个小房间(虚拟环境)里的操作的影响范围只限于在这个房间(虚拟环境)内,各个房间(虚拟环境)互相独立互不影响,房间(虚拟环境)可以随时创建(新建)和拆除(删除)。
1 | # 切换到项目的根目录下 |
注意,如果在IDE(如PyCharm)的Terminal里执行创建venv的命令,可能会报权限的错,使用系统的终端便可正常使用。
04.附录
查看pip版本
1
$ pip -V
用pip安装package时,加上–user参数,会安装到当前用户的库目录中,只对当前用户有效,不加–user会安装到全局目录,对所有用户有效。如果你的电脑只有一个用户,那么二者没有区别
1
2
3
4
5$ pip install --user
~/Library/Python/3.9/lib/python/site-packages/
$ pip install
/usr/local/lib/python3.9/site-packages/brew安装目录
/usr/local/Cellar
Homebrew配置目录
/usr/lcoal/etc
Homebrew命令目录
/usr/local/binbrew常用命令
brew install FORMULA
brew cleanup
bew searh FORMULA
brew info FORMULA
brew upgrade FORMULA
brew update