这不是代码 bug,而是系统权限策略在拦你——别硬 sudo,优先用 --user 或虚拟环境;错误本质是操作系统拒绝写入目标目录,常见于系统级 site-packages 路径、UAC 保护目录或虚拟环境归属错误,最安全方案是 pip install --user 或 python -m venv 创建并激活虚拟环境。
![如何解决python安装库时出现的environmenterror: [errno 13] permission denied?](https://img.php.cn/upload/article/000/969/633/178087613133325.png)
直接结论:这不是代码 bug,而是系统权限策略在拦你——别硬 sudo,优先用 --user 或虚拟环境。
为什么 pip install 会报 [Errno 13] Permission denied
错误本质是操作系统拒绝了写入目标目录的操作。常见触发点包括:
-
/usr/local/lib/python3.x/site-packages/(macOS/Linux 系统级路径,普通用户无写权) -
C:\Program Files\Python\...(Windows 默认安装位置,受 UAC 保护) - 虚拟环境目录归属错误(比如用
sudo python -m venv创建,导致目录属 root) - 当前 shell 没激活虚拟环境,却误以为已激活,实际调用的是系统 pip
最安全的解决方式:用 --user 参数
它把包装进当前用户的家目录(如 ~/Library/Python/3.9/lib/python/site-packages/ 或 %APPDATA%\Python\Python39\site-packages\),完全绕过系统目录权限限制。
- 命令就是:
pip install --user requests(所有包都加--user) - 首次使用后,可能需要把用户 site-packages 路径加入
PYTHONPATH(尤其在 IDE 中运行脚本时) - 验证是否生效:
python -c "import requests; print(requests.__file__)",路径应指向用户目录而非/usr/或Program Files
真正隔离且可复现的方案:用 venv 创建虚拟环境
这是生产环境和协作项目的事实标准,不是“高级技巧”,而是基础操作。
生成 GitHub Actions、GitLab CI、Jenkins 的 CI/CD 流水线配置,适用于 Node.js、Python、Go、Docker 项目,支持回滚等配置。
立即学习“Python免费学习笔记(深入)”;
- 创建:
python -m venv myenv(不要加sudo) - 激活:
source myenv/bin/activate(macOS/Linux)或myenv\Scripts\activate(Windows) - 确认激活成功:
which python(macOS/Linux)或where python(Windows)输出必须是myenv/...路径 - 此时
pip install自动写入虚拟环境目录,无需额外参数,也无需提权
哪些做法要立刻停用
它们短期能“跑通”,但埋下长期隐患:
- 用
sudo pip install(macOS/Linux)或“以管理员身份运行 CMD”(Windows)——会污染系统 Python,后续升级、卸载、多版本共存全乱套 - 手动
chmod -R 777 /usr/local/lib/python*——等于给整个 Python 生态开后门,安全风险极高 - 反复重装 Python 或修改注册表试图“修复权限”——问题不在 Python 本身,而在执行上下文
真正容易被忽略的是:错误往往发生在「你以为在虚拟环境里,其实没激活」或「IDE 使用了错误的解释器路径」。每次报错前,先跑一遍 which python 和 pip show pip,比盲目试错快十倍。

















