You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pip/pip3安装matplotlib遇权限错误求助

解决pip安装matplotlib时的权限拒绝问题

问题分析

从错误日志能看到两个核心问题:

  • 你的pip3属于Python3.9,但尝试将包安装到Python3.10的用户site-packages目录(/Users/Bob/Library/Python/3.10/lib/python/site-packages),导致权限拒绝
  • pip版本过旧(21.2.4),可能引发路径处理的兼容性问题

错误日志:

➜  ~ pip3 install matplotlib
Collecting matplotlib
  Using cached matplotlib-3.8.0-cp39-cp39-macosx_11_0_arm64.whl (7.5 MB)
Collecting contourpy>=1.0.1
  Using cached contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl (232 kB)
Collecting kiwisolver>=1.0.1
  Using cached kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl (66 kB)
Collecting pillow>=6.2.0
  Using cached Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl (3.3 MB)
Collecting cycler>=0.10
  Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)
Collecting pyparsing>=2.3.1
  Using cached pyparsing-3.1.1-py3-none-any.whl (103 kB)
Collecting fonttools>=4.22.0
  Using cached fonttools-4.43.1-cp39-cp39-macosx_10_9_universal2.whl (2.7 MB)
Collecting python-dateutil>=2.7
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting importlib-resources>=3.2.0
  Using cached importlib_resources-6.1.0-py3-none-any.whl (33 kB)
Collecting packaging>=20.0
  Using cached packaging-23.2-py3-none-any.whl (53 kB)
Collecting numpy<2,>=1.21
  Using cached numpy-1.26.1-cp39-cp39-macosx_11_0_arm64.whl (14.0 MB)
Collecting zipp>=3.1.0
  Using cached zipp-3.17.0-py3-none-any.whl (7.4 kB)
Collecting six>=1.5
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: zipp, six, numpy, python-dateutil, pyparsing, pillow, packaging, kiwisolver, importlib-resources, fonttools, cycler, contourpy, matplotlib
Successfully installed contourpy-1.1.1 cycler-0.12.1 fonttools-4.43.1 importlib-resources-6.1.0 kiwisolver-1.4.5 matplotlib-3.8.0 numpy-1.26.1 packaging-23.2 pillow-10.1.0 pyparsing-3.1.1 python-dateutil-2.8.2 six-1.16.0 zipp-3.17.0
ERROR: Exception:
Traceback (most recent call last):
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/shutil.py", line 806, in move
    os.rename(src, real_dst)
PermissionError: [Errno 13] Permission denied: '/private/var/folders/58/6kdshsgx3gj6k1pmsmst6fth0000gn/T/pip-target-5yt_jb8r/lib/python/packaging' -> '/Users/Bob/Library/Python/3.10/lib/python/site-packages/packaging'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 173, in _main
    status = self.run(options, args)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 203, in wrapper
    return func(self, options, args)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 446, in run
    self._handle_target_dir(
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 505, in _handle_target_dir
    shutil.move(
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/shutil.py", line 822, in move
    copytree(src, real_dst, copy_function=copy_function,
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/shutil.py", line 557, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/shutil.py", line 458, in _copytree
    os.makedirs(dst, exist_ok=dirs_exist_ok)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/os.py", line 225, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/Users/Bob/Library/Python/3.10/lib/python/site-packages/packaging'
WARNING: You are using pip version 21.2.4; however, version 23.3 is available.
You should consider upgrading via the '/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip' command.

解决方案

1. 确认Python与pip的版本对应关系

先搞清楚你用的Python和pip是否属于同一版本:

# 查看Python3路径和版本
which python3
python3 --version

# 查看pip3路径和版本
which pip3
pip3 --version

如果路径和版本不匹配(比如Python是3.10,pip是3.9),就会出现跨版本安装的权限问题。

2. 使用对应Python版本的pip安装(推荐)

直接用目标Python版本调用pip,加上--user参数安装到用户目录,避免系统权限限制:

  • 如果要给Python3.9安装:
    python3.9 -m pip install matplotlib --user
    
  • 如果要给Python3.10安装,先找到Python3.10的可执行文件路径(比如/usr/local/bin/python3.10),然后运行:
    python3.10 -m pip install matplotlib --user
    

3. 升级对应版本的pip

先升级pip到最新版本,避免旧版本的路径bug:

# 升级Python3.9的pip
python3.9 -m pip install --upgrade pip

# 如果用Python3.10,就运行
python3.10 -m pip install --upgrade pip

4. 修复brew安装的Python路径冲突

如果你用brew安装了Python,确保它的优先级高于系统自带的Python:

# 把brew的Python路径加入环境变量(针对zsh终端)
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc

# 重启终端后,重新链接brew的Python
brew reinstall python3
brew link --overwrite python3

5. 验证安装结果

运行对应版本的Python,测试matplotlib是否能正常导入:

python3.9
# 进入Python交互环境后输入
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.show()

如果能弹出图表,说明安装成功。


内容的提问来源于stack exchange,提问作者Abdollah Hosseini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:27:03