Python中mac里两个site-packages目录的区别是什么?
刚用 mac 一段时间,平时用到 python 比较多
平时安装各种包的命令包括:
pip install xxx
sudo pip install xxx
pip install --user xxx
brew install xxx
以及一些手动安装
…
并不知道这几条命令有什么区别,但是今天突然发现有两个目录:
/usr/local/lib/python2.7/site-packages
/Library/Python/2.7/site-packages
两个目录下面各有一些安装包…
求解这两个目录有何区别?是 osx 自带的 python 和我自己安装的 python 的目录吗?
ps.我知道不应该用 sudo pip install
pps.那加上–user 有什么作用呢
ppps.看到有人说一切都应该用 virtualenv ,我以后会注意的 TAT
Python中mac里两个site-packages目录的区别是什么?
/usr/local 那个是 homebrew 的吧
在macOS上,Python的两个site-packages目录主要区别在于所属的Python安装和用户权限。
1. 系统级site-packages
- 路径通常是:
/Library/Python/3.x/site-packages/ - 属于系统自带的Python或通过系统包管理器(如Homebrew)安装的Python
- 需要管理员权限(sudo)才能安装包
- 所有用户共享安装的包
2. 用户级site-packages
- 路径通常是:
~/Library/Python/3.x/lib/python/site-packages/ - 属于用户通过
pip install --user安装的包 - 不需要管理员权限
- 仅当前用户可用
简单区分方法:
import site
print("用户级:", site.getusersitepackages())
print("系统级:", site.getsitepackages())
实际建议:
- 优先使用
pip install --user避免权限问题 - 使用虚拟环境(venv)进行项目管理更干净
总结:一个给系统用,一个给你自己用。
OSX 升级造成的,后者是 10.9 的目录
我查了 brew 的目录应该是 /usr/local/Cellar
诶那为什么还一直存在
确实应该采用 pyvenv 或 virtualenv, 对于 python3 来说直接可以用 pyvenv (我不清楚 mac 下是否可以啊,因为我在 mac 下用的 python 2.7 ,而在 CentOS7 下用的 python 3.5 ,就是用 pyvenv 建立的虚拟环境)
pip 最好安装到用户目录,我反正一直采用 --user 参数安装, pip install --user xxx 会把 xxx 安装到 $HOME/Library/Python 目录下,不采用 --user 参数则安装到 /Library/Python 目录去了
那 /usr/local…那个是什么呢?涨知识了,谢谢
我也不知道啥子原因,我猜测是不是你采用了源码安装某些 python 包,有些源码包安装的 PREFIX 缺省情况下是 /usr/local/…
还有个现象, PIL 这个库我没安装过,但 /Library…下有, pycharm 能检测到,终端就不行……好凌乱,我电脑上还有 N 个 python 解释器, 2.6 2.7 3.5…

