Windows pip install 报错 Access Deni

强迫症脚本小子 专家 1天前 更新于 2026年7月26日 401 浏览 12 点赞 约 1 分钟

在 Windows 上用 pip install 安装像 mitmproxy 这种带 .pyd 二进制模块的包时,经常会撞上 [Error 5] Access is denied。这本质上不是简单的权限不足,而是 Windows 的 %TEMP% 目录(尤其是 AppData\Local\Temp\easy_install-*)在解压或编译依赖(如 cryptography)时,文件被占用或权限锁死导致的。

很多人的习惯是直接运行 pip,但在 Windows 环境下,用 python -m pip 才是更稳妥的实操方式,因为它能确保 pip 在当前 Python 解释器的上下文中运行,有效规避全局路径冲突和部分权限偏差。

解决步骤

一、清理环境与权限预检
首先关闭 VS Code、PyCharm 等所有可能占用 Python 环境的编辑器。然后以管理员身份打开 PowerShell,检查临时目录权限:

icacls $env:TEMP

二、强制清理缓存与残留
如果之前安装失败,临时文件夹里可能残留了被锁定的文件,直接运行删除命令:

Remove-Item -Recurse -Force "$env:TEMP\easy_install-*" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$env:TEMP\pip-*" -ErrorAction SilentlyContinue

三、执行干净安装
不要直接用 pip,使用 python -m pip 并加上 --no-cache-dir 绕过可能损坏的缓存:

python -m pip install --upgrade pip
python -m pip install --no-cache-dir mitmproxy

彻底根治的方案

如果上述步骤依然报错,大概率是系统 %TEMP% 目录的权限机制太混乱。建议直接自定义一个 pip 专用临时目录:

# 创建一个权限宽松的自定义临时文件夹
New-Item -ItemType Directory -Path "C:\temp-pip" -Force
# 将 TMPDIR 环境变量指向该目录
[Environment]::SetEnvironmentVariable("TMPDIR", "C:\temp-pip", "User")
设置完后重启终端,pip 就会在 C:\temp-pip 中进行编译,彻底避开系统默认临时文件夹的权限坑。

实战总结与避坑

  • 安装命令: 推荐使用下面的组合拳,先卸载冲突项再强制重装。
python -m pip uninstall -y cryptography cffi
Remove-Item -Recurse -Force "$env:TEMP\easy_install-*", "$env:TEMP\pip-*" -ErrorAction SilentlyContinue
python -m pip install --no-cache-dir --force-reinstall cryptography cffi
python -m pip install --no-cache-dir mitmproxy
  • 避坑指南: 尽量不要在最终安装阶段一直使用管理员权限运行,否则部分生成的文件所有权会变成 System,导致后续普通用户权限的 IDE 无法读取。
  • 环境建议: 如果是 Conda 用户,建议优先用 conda install -c conda-forge,因为 Conda 对二进制依赖的处理比 pip 在 Windows 上更成熟。
AI编程AI编程实战pythoncodingsoftware

全部回复 (4)

产品经理阿强 中级 10小时前
用--user安装能绕过这个报错吗?我也经常遇到。
0 回复
完美主义技术宅 专家 10小时前
试过用管理员身份跑 CMD,基本都能解决,省事。
0 回复
小柯 专家 10小时前
这招最快了!不过用虚拟环境会更优雅,你平时怎么管理库的?
0 回复
程序员Tom 高级 10小时前
我之前也卡在这了,最后得关掉占用文件的软件才行。
0 回复

发表回复

支持 Markdown 格式