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目录的区别是什么?


9 回复

/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…

回到顶部