macOS下pip与easy_install安装目录不同致pip安装包无法使用
这种情况我在macOS上折腾Python2的时候碰到过好几次,核心问题基本都是系统自带Python环境的权限/路径冲突,或者你的pip和正在使用的python根本不是同一个环境!下面一步步来排查:
1. 先确认pip和python是否属于同一个环境
macOS默认自带Python2.7,但很多用户会自己安装其他版本的Python,或者通过easy_install/Homebrew装了独立的pip,导致两者不匹配。
执行以下命令检查:
# 查看当前默认Python的路径和版本 which python python --version # 查看当前pip的路径和绑定的Python版本 which pip pip --version
- 如果
pip的输出显示绑定的Python版本和你用的python不一致(比如一个是2.7,一个是3.x),那肯定会出问题; - 如果
pip的路径是~/Library/Python/2.7/bin/pip,而python是/usr/bin/python(系统自带),那说明你用的是用户级的pip,安装的包会默认放到用户目录,而不是系统目录。
2. 检查可执行文件的路径是否在PATH里
当你用用户级的pip安装pylint时,可执行文件会被放到~/Library/Python/2.7/bin/,但这个路径默认可能没加到你的系统PATH环境变量里,所以终端找不到pylint命令。
执行以下命令检查:
echo $PATH
如果输出里没有~/Library/Python/2.7/bin,那需要把它加入环境变量:
- 如果你用的是bash,编辑
~/.bash_profile,添加一行:export PATH="$HOME/Library/Python/2.7/bin:$PATH" - 如果你用的是zsh,编辑
~/.zshrc,添加同样的内容; - 保存后执行
source ~/.bash_profile(或source ~/.zshrc)生效。
3. 权限问题导致包无法安装到系统目录
macOS系统级的/Library/Python/2.7/site-packages需要管理员权限才能写入,普通用户直接用pip install的话,pip会自动降级到用户目录安装(也就是~/Library/Python/2.7/lib/python/site-packages),这时候如果你的默认python是系统自带的,它的模块搜索路径不会包含用户目录,所以会出现“无法导入模块”的问题。
你可以执行以下命令查看Python的模块搜索路径:
python -c "import sys; print('\n'.join(sys.path))"
如果输出里没有~/Library/Python/2.7/lib/python/site-packages,那系统Python确实找不到你用pip装的包。
解决思路:
- 不推荐用
sudo pip install:这会修改系统自带Python的环境,可能导致系统工具依赖的Python包被破坏; - 优先使用虚拟环境:用
virtualenv创建独立的Python2.7环境,在环境里安装包就不会和系统环境冲突; - 建议升级到Python3:Python2已经停止维护多年,用
pip3安装包的环境逻辑更清晰,也不会和系统自带的Python2.7搅在一起。
4. 为什么numpy在系统目录?
你提到的numpy在/Library/Python/2.7/site-packages,大概率是以下几种情况:
- 之前用
sudo pip install numpy安装的(管理员权限写入系统目录); - 是macOS系统自带的依赖包;
- 通过Homebrew等第三方包管理器安装的(Homebrew会把Python包放到自己的独立路径,然后链接到系统)。
内容的提问来源于stack exchange,提问作者Something

