一个奇怪的但可能不怎么重要的发现,关于最新mac系统,python位置和包管理位置的问题

macOS BigSur系统 发现自带python3,版本是3.8
pip3 --version 的时候,显示以下的地址
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages

pip --version 的时候,显示以下的地址
/Library/Python/2.7/site-packages/pip-10.0.1-py2.7.egg/pip (python 2.7)

which python3 的时候,显示
/usr/bin/python3

which python 的时候,显示
/usr/bin/python

再通过pycharm interpreter 工具,查看到,pycharm的虚拟环境和python3的系统环境,三方库的安装位置,共同点是,都显示了XCode相关的路径

地址1 file:///Users/MZP/Library/Python/3.8/lib/python/site-packages

地址2 file:///Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages

对比发现这两个地址,在pip3 安装三方包的时候,是被安装在了[地址1]的位置, 同时地址2的内容也会出现在工具的展示列表里

因为之前没有注意过系统自带的python环境
所以我就是觉得奇怪, python3 和他的包管理工具pip3 还有XCode 的关系, 在这个MacOS BigSur系统里,显得很乱

现在,我只能做以下推论:
对于python来说,解释器是解释器,框架是框架
which python3的时候,看到的是解释器, 位置 “/usr/bin/python3”
而真正的python3框架代码在XCode的框架库里面

pip3 --version 的时候,显示以下的地址
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages

因为 pip 则属于源码里的一个工具, 在这个源码的路径下有一些原生的包
而真正 pip install的时候, 三方包又会下载到一个新的目录
地址1 file:///Users/MZP/Library/Python/3.8/lib/python/site-packages

在pycharm 的interperter工具中,原生的包和下载安装的三方包,都会在列表中展示

第一次发帖,说的可能有点啰嗦,不知道对不对呢

1 个赞

是挺啰嗦,不管怎么安排,自己开发的尽量使用virtual env处理就好了。一般默认是python2 pip2 python3 pip3等是配对出现的。而默认的python与pip一般是软连接,允许用户去自定义到底要指向哪个版本

也可以用python3 -m sitepip3 -V来确认相关路径