在Windows上安装pip时遇到访问被拒绝错误。

168

我正在尝试在Windows上运行pip install mitmproxy,但即使使用Run as Administrator选项的cmdPowerShell,我仍然无法获得访问权限被拒绝。

WindowsError: [Error 5] Access is denied: 'c:\\users\\bruno\\appdata\\local\\temp\\easy_install-0fme6u\\cryptography-0.9.1\\.eggs\\cffi-1.1.2-py2.7-win-amd64.egg\\_cffi_backend.pyd'

我该如何让这个工作起来?


这里还有一篇不错的旧帖子:有任何想法如何在Windows上更新Python PIP吗? - strpeter
21个回答

224

对于Windows系统,在命令提示符(管理员)中尝试使用Python可执行文件运行pip install

python -m pip install mitmproxy

这应该可以正常工作,至少对我来说在安装其他软件包时有效。


10
出于某种原因,我的用户对临时文件的权限不是完全控制。通过 python -m 这个路径进行操作有所不同。 - Jason Dunkelberger
8
我们知道这为什么起作用吗?而且不能通过PowerShell实现吗? - Big Money
8
是的,@BigMoney,我很有理由怀疑它为什么对这些用户有效:他们被授予运行Python的权利,但没有运行PIP的权利。在Python中,你可以通过传递“-m”标志来指定要运行的 Python 模块。PIP 是一个 Python 模块,因此可以通过这种方式传递。但对于任何可以直接运行的 Python 模块都是有效的。例如,尝试一下 python -m http.server 8000,你会发现现在在本地机器上的端口8000有一个HTTP服务器正在运行。 - Mike Williamson

85

通过以下步骤更改Python安装文件夹的安全权限:

  1. 打开Python shell
  2. 进入任务管理器
  3. 找到Python进程
  4. 右键单击并打开位置
  5. 文件夹将在资源管理器中打开,请向上导航一个目录
  6. 右键单击文件夹并选择属性
  7. 单击“安全”选项卡,然后点击“编辑”
  8. 添加所有人并授予读写权限。
  9. 保存更改

如果您以管理员身份打开cmd,则可以执行以下操作:

如果Python已在PATH中设置,则使用以下命令:

python -m pip install mitmproxy

4
我不得不对“ALL APPLICATION PACKAGES”和“Users”都进行此操作,但是这样做后它就起作用了。 - Chronicle
2
运行得非常完美。非常感谢! - Sudipto Shome
8
类似的替代方案:1)安装Linux 2)sudo pip install foo - Nearoo
2
@Chronicle 你真的允许所有人读写用户档案吗?如果是的话,那是一个非常糟糕的想法(非常糟糕)。 - David Ferenczy Rogožan
1
@Nearoo 你是认真的吗?你在暗示安装新操作系统和运行pip作为Python可执行模块一样容易吗?首先,那不是真的。其次,你假设OP没有理由使用Windows机器。第三,你假设OP没有重要的应用程序等无法移植到Linux。我经常使用Linux。我更喜欢Linux。但我仍然觉得那个建议荒谬。在我看来,这似乎是在恶意挑衅。 - Mike Williamson
显示剩余3条评论

35

个人而言,我发现通过以管理员身份打开cmd,然后运行以下命令python -m pip install mitproxy似乎解决了我的问题。

注意:我是通过chocolatey安装的python。


1
如果您以管理员身份运行 cmd,则应该能够正常执行 pip install [package]。反正对我来说有效。 - EliSquared

23

我通过Anaconda Prompt进行安装。在我的情况下,即使使用 python -m pip install 也无法正常工作,然后我添加了这个。

python -m pip install <package_name> --user

对我来说有效。

例如:python -m pip install mitmproxy --user

另外,你应该尝试以管理员身份运行命令提示符,然后再尝试pip安装。它应该也会有效。


这对我在学校安装Python包(例如sympy)非常有效。谢谢! - JDG
1
当您无法获得系统管理员权限时,最佳解决方案。 - Ajay Sharma
这终于做到了! - JacobIRR
除了这个命令,其他的都对我没用。但是当我运行这个命令时,出现了以下错误 - “ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.” 有什么帮助吗? - Prakhar Rathi

22

之前的答案没有提到的一件事是,在Windows上经常会遇到问题,即使以管理员身份运行,如果有另一个程序正在使用您(或pip install)尝试访问的某些文件,则会出现相同的权限被拒绝错误。这是Windows的一个非常愚蠢的“功能”,会频繁弹出,例如尝试移动某些文件时。

此外,我不知道如何查找锁定特定文件的程序,因此最简单的方法是在启动任何程序之前重新启动,并进行安装,特别是在运行Spyder或任何其他基于Python的软件之前。您也可以尝试关闭所有程序,但很难知道哪个程序实际上持有该文件。例如,对于一个目录,只需要在该目录中打开一个资源管理器窗口即可。


是的,这对我起作用了!我在 Git Bash、Pycharm 终端和 Windows 终端上同时工作,在关闭其中两个后一切正常。 - Cappo

9

以管理员身份运行cmd,并执行命令pip install mitmproxy。它会自动安装。


6
尝试授予Python文件夹完全控制权限。
找到Python根目录->右键单击->属性->安全->编辑->给用户完全控制权限->是并等待过程完成。
这对我有效。

5
在我的情况下,原因是我打开了一个Jupyter笔记本,该笔记本正在导入相关库;根本原因似乎是由于文件被打开/正在使用而导致的Windows错误(另请参见@Robert的答案,并建议重新启动)。
因此,另一件要验证的事情是没有其他Python进程正在运行。
对我来说,关闭笔记本服务器解决了这个问题。

4
尝试手动删除文件夹c:\\users\\bruno\\appdata\\local\\temp\\easy_install-0fme6u,然后再次尝试pip命令。

谢谢。一些临时的pip文件阻止了安装。 - Eok

3

当一切都失败的时候,请尝试退出您的IDE。我曾经遇到过很多情况是由PyCharm引起的。一旦我退出PyCharm,我就能够最终通过命令行安装我的软件包。或者,您也可以通过PyCharm本身在“设置” -> “项目:xxx” -> “项目解释器” -> +来安装。


1
我也遇到了同样的问题,直到关闭Spyder才解决了。 - atm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接