使用Pycharm学习Python的过程中一直对自己Macbook上的Python环境一知半解, 今天使用pip安装新的包时突然发现Pycharm中使用的Python环境和命令行不一致, 于是摸索着清理了一下环境.
MacOS上的Python安装
一般有三种情况:
- 默认自带Python2
查看一下会发现不管是/usr/bin/python
还是/usr/bin/python2
或者/usr/bin/python2.7
其实都是指向
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
的链接 - 通过brew安装的Python3
可以用brew info python
查看安装位置,一般应该在/usr/local/Cellar/python/3.7.6_1
- 从Python官网上下载安装包安装的,位置在
/Library/Frameworks/Python.framework/Versions/3.8
环境变量的作用
安装好后,一般来说我们会在命令行中启动python或者python3,系统会去/usr/bin/
和/usr/local/bin/
中查询对应的程序,所以不论是通过brew还是通过官网安装包安装Python后,都会在/usr/local/bin/
中创建有关python3的软链接。因此不能正确调用和执行的问题就出在这里。
lrwxr-xr-x 36B Feb 4 16:24 python3 -> ../Cellar/python/3.7.6_1/bin/python3
lrwxr-xr-x 43B Feb 4 16:24 python3-config -> ../Cellar/python/3.7.6_1/bin/python3-config
lrwxr-xr-x 38B Feb 4 16:24 python3.7 -> ../Cellar/python/3.7.6_1/bin/python3.7
lrwxr-xr-x 45B Feb 4 16:24 python3.7-config -> ../Cellar/python/3.7.6_1/bin/python3.7-config
lrwxr-xr-x 39B Feb 4 16:24 python3.7m -> ../Cellar/python/3.7.6_1/bin/python3.7m
lrwxr-xr-x 46B Feb 4 16:24 python3.7m-config -> ../Cellar/python/3.7.6_1/bin/python3.7m-config
lrwxr-xr-x 71B Feb 4 15:38 python3.8 -> ../../../Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8
lrwxr-xr-x 78B Feb 4 15:38 python3.8-config -> ../../../Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8-config
lrwxr-xr-x 82B Feb 4 16:03 pip3 -> /usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/bin/pip3
lrwxr-xr-x 84B Feb 4 16:04 pip3.7 -> /usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/bin/pip3.7
lrwxrwxr-x 68B Feb 4 15:39 pip3.8 -> ../../../Library/Frameworks/Python.framework/Versions/3.8/bin/pip3.8
整理环境
MacOS升级到Catalina后,默认Shell变成了zsh。Python官网安装包里有个Update Shell Profile.command文件,执行后会将PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/3.8"
写入到~/.zprofile
,结果是在$PATH
中将这个路径调整到/usr/bin/
和/usr/local/bin/
之前,这样就确保调用的是官网安装版。
所以如果要使用brew版的话,需要修改软链接的指向,并且将~/.zprofile
中的设置注释成失效,这样环境变量就只保留两个bin目录。然后用brew link python
和brew link python3
自动将软链接重新设置好,如果这一步有报错的话尝试
sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/*
brew link python3
如果再有错误的话,就只有删除后手工一条一条创建软链接了。
参考
写的特别好的一篇文章MacOS 下多 Python 版本说明
网友评论