由于环境错误,无法安装软件包:[WinError 5] 拒绝访问。

282

我有Windows 10。我已经完成了Tensorflow的安装。它可以正常工作。它会显示“Hello Tensorflow!”但在此之前,它会显示以下内容:

2018-08-18 18:16:01.500579: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 
2018-08-18 18:16:01.769002: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1405] Found device 0 with properties: name: GeForce GTX 950 major: 5 minor: 2 memoryClockRate(GHz): 1.3545 pciBusID: 0000:01:00.0 totalMemory: 2.00GiB freeMemory: 1.64GiB 
2018-08-18 18:16:01.774030: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1484] Adding visible gpu devices: 0 
2018-08-18 18:16:02.095489: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:965] Device interconnect StreamExecutor with strength 1 edge matrix: 
2018-08-18 18:16:02.099093: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:971] 0 
2018-08-18 18:16:02.100631: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:984] 0: N 
2018-08-18 18:16:02.102156: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1097] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1401 MB memory) -> physical GPU (device: 0, name: GeForce GTX 950, pci bus id: 0000:01:00.0, compute capability: 5.2) Hello Tensorflow!

Process returned 0 (0x0) execution time : 2.327 s Press any key to continue

当我在命令提示符中键入pip3 install --upgrade tensorflow-gpu时,无论是管理员还是普通用户,我都会得到以下结果:

Could not install packages due to an EnvironmentError: [WinError 5] Access is denied: 'c:\\users\\dylan\\appdata\\local\\programs\\python\\python35\\Lib\\site-packages\\numpy\\.libs\\libopenblas.BNVRK7633HSX7YVO2TADGR4A5KEKXJAW.gfortran-win_amd64.dll'
Consider using the `--user` option or check the permissions.

41
pip3安装命令中加上--user选项。 - Zain Patel
18
我不明白为什么现在我们需要使用"--user"? 因为这样安装会将程序安装到用户目录,而这可能不是你想要的。 “安装到适用于您平台的Python用户安装目录。通常为~/.local/或Windows上的%APPDATA%\Python。(有关完整详细信息,请参见Python文档中的site.USER_BASE。)” - not2qubit
11
我真的不想安装在用户目录下,以管理员身份运行CMD也会出现相同的错误。 - Michael Szczepaniak
这个回答解决了你的问题吗?在Windows上安装pip时出现访问被拒绝的错误 - Gonçalo Peres
4
尝试关闭您的IDE和Jupyter Notebooks。 - Kaschi14
显示剩余3条评论
50个回答

297

只需输入您希望执行的命令并获得用户权限,如果您不想更改权限:

pip3 install --upgrade tensorflow-gpu --user

6
为什么这种方法可行而普通的pip安装不行? - dan
22
对于理解此命令的人来说,这可能是显而易见的,但可以有人详细说明一下在代码执行中 "--user" 命令是做什么的吗? - GrayLiterature
将软件安装到用户目录中,让所有环境都可以使用该软件包,而不是各自的软件包。 - MJimitater
2
我遇到了一个错误:ERROR: Could not install packages due to an EnvironmentError: [WinError 2] The system cannot find the file specified: 'c:\python39\Scripts\tqdm.exe' -> 'c:\python39\Scripts\tqdm.exe.deleteme'但是,添加 --user 后问题得以解决。 - Palash Mondal
36
如果您尝试在虚拟环境中进行安装(这是您应该始终采用的方式),那么这个答案就没用了。 - alelom
1
我在虚拟环境中遇到了这个错误。我该怎么办? - rishikesh fulari

113

使用 --user 参数运行相同的命令。


1
错误信息建议使用“--user”选项或检查权限。我已经添加了--user,并解决了问题。 - thanos.a
4
有区别:该软件包将被安装在%userprofile%目录下。 - user3103059
21
如果你一直在尝试在虚拟环境下安装,这句话的意思是无用的。 - alelom
5
对于非重度编程人员,有很多使用Python的情况需要在整个系统中进行简单安装,而不是为每个新的Python项目都创建一个虚拟环境。如果人们能够针对提出的问题提供各种解决方案,并在提供这些信息后解释每种方法的差异,那将非常有帮助。 - Prithvi Boinpally
1
@alelom,当我在虚拟环境中运行时,出现了这个错误。 - Bobort
显示剩余2条评论

99

只需更改特定包要安装的访问权限。

Windows 10 上:

  • 进入安装文件夹。例如:C:\Program Files (x86)\Python37
  • 右键点击 Python 安装根目录并选择 属性。在此示例中,是 Python37 文件夹。
  • 进入 安全 选项卡,点击 编辑 按钮并允许 Users 组拥有 完全控制 权限。记得点击 应用
  • 再次尝试安装该软件包。

以下是所需的设置示例: enter image description here


2
具体来说,lib子文件夹。 - mlhDev

58

我正在将tensorflow升级到1.4.0,但是一直遇到无法解决的错误,最终问题得到了解决。你猜怎么着?

我的一个python脚本一直在运行,它正在使用tensorflow。当关闭该脚本后,安装成功了。


4
我也有同样的问题。 - Florin Marcus
我猜我也遇到了同样的问题。虽然我通过任务管理器结束了所有 Python 实例,但在计算机重启后安装成功了。 - mKay
这对我有用,谢谢! - chilifan
这对我也起作用了。原来我在一些带有自动重载的笔记本上使用了相同的环境。关闭那些笔记本解决了问题。 - Rishabh Gupta

35

我发现如果我以管理员身份运行CMD并运行该命令,我可以毫无问题地安装它。 试试并给我一些反馈。


1
这个方法和安装Python后重新启动电脑对我很有效。 - Ryan_S
这对我有用。奇怪的是,即使以管理员身份运行Windows终端也不起作用。 - howdoicode
1
对我来说可以工作。有趣的是,只有以管理员身份打开CMD才有效,而以管理员身份打开Git Bash则无效。 - Shlomi A
5
确实可以这样做,奇怪的是管理员身份的Windows PowerShell显示访问被拒绝并且安装失败,但实际上它确实完成了工作。 - Joris
无法正常工作,可能是因为我无法给予cmd完全权限。 - Hao S
2
在我的情况下,具有管理员权限的CMD无法工作,但具有管理员权限的Powershell可以。因此尝试两者可能会有所帮助。 - SJGD

23

哦,天啊。这里有很多错误的答案。虽然出于好意但是会误导人。 我通常可以很好地处理Mac/Linux上的权限问题。如今在Windows上有些陌生了。这是我遇到的问题。

  1. 创建一个虚拟环境 - 没问题
  2. activate 我的虚拟环境 - 失败。需要运行powershell的Scope。Windows很有帮助,会告诉你需要运行哪个命令来允许.ps运行。有点像chmod,但具有执行scope,我认为这很好。
  3. 现在如果你已经完成了上述步骤并安装了一些包,那就没问题了。直到你突然不能继续了才会出现权限错误。
  4. 某些东西设置了pip安装包的文件夹的权限,可能是你或其他进程的操作。例如...site-packages/。在我的情况下,我怀疑是OneDrive或某些继承的权限造成的。

理想的解决方法是检查权限。虽然很难,但你不是Python开发人员吗! 首先检查你自己的用户。

  1. whoami 例如 mycomputer\vangel
  2. Get-Acl <path which is an issue>
  3. 右键单击Python安装文件夹或你的虚拟环境,进入安全选项卡。点击高级并查看权限。我删除了所有继承的权限和其他用户等,并显式地添加了我的whoami用户,并赋予了完全权限,然后应用到所有对象。

在执行下面的步骤之前,请务必进行验证。仔细阅读消息。

这并不是解决可能影响您的所有权限问题的唯一方法。我只能指导您如何进行故障排除,并希望您能够解决问题。

如果它对您有效,设置--user标志在任何地方都不是必要的。但是你仍然不知道哪里出了问题。

更多步骤:

尝试删除一个软件包并重新安装它。

pip uninstall requests pip install requests

这可以解决问题,但我遇到了特定软件包的权限问题。

结果,当文件被进程锁定时,Windows会出现权限错误。Python将其报告为[Winerror 5],我无法轻松找到文档参考。让我们测试一下这个理论。

我找到了得到权限错误的确切文件。按删除键。毫无疑问,Windows会提示该文件在python中打开。当然是这样。

我在所有python上点击结束任务,自1996年以来就一直这样工作。但是我等了几秒钟,以防某些进程正在启动python。检查了任务管理器,一切正常。

在20次尝试无法让pip安装特定的azureml软件包后,我非常确定这解决了问题。

我运行了pip安装命令,它完美地安装了。

故事的寓意:在从Stackoverflow复制粘贴之前请理解您要做什么。祝您好运。

附注:请停止以管理员身份安装Python或其包。自2006年以来,我们已经过了这个阶段。


在Windows 10上,似乎没有任何东西适用于我。当我在CMD中以管理员权限运行pip install pip --upgrade pip以便在虚拟环境中安装时,我收到错误消息ERROR: Could not install packages due to an OSError: [WinError 5] Access is denied: 'C:\\Users\\FOO\\AppData\\Local\\Temp\\pip-uninstall-c3m4ipqf\\pip.exe' Check the permissions. 我还删除了该临时文件夹中的所有子文件夹pip-*,但没有帮助。对此有什么想法吗? - Joerg
抱歉我错过了你的评论。对于那些回来的人,请不要使用管理员权限。一旦你这样做,你就会有一些具有错误权限的文件夹混合在一起。另外,在我的上面的笔记中,我已经提到一个正在运行的Python进程可能会导致Windows锁定该目录无法被操作。尝试重新启动,甚至尝试安全模式以确保Python没有被其他进程侧载或运行。 - Abhishek Dujari
这应该是被接受的答案。我发现问题在于我的应用程序后台有几个挂起的进程。我不得不杀掉它们并关闭Apache服务器。它非常有效。 - Bobort
@AbhishekDujari 谢谢!"事实证明,当文件被进程锁定时,Windows会出现权限错误。"我在另一个 PowerShell 中运行 Flask。 - undefined
@AbhishekDujari 谢谢!"原来,当文件被进程锁定时,Windows会出现权限错误。"我在另一个 PowerShell 中运行 Flask。 - Edward

20

我使用了这个命令,它有效:

python -m pip install --user --upgrade pip

12
  • Windows
  • 普通的、更新的 Python 3.7
  • 已激活虚拟环境
  • 不需要在终端中使用管理员权限
  • 不需要使用--user 参数

只需:

py -m pip install --upgrade pip

做到了。


10

在Windows中尝试以下操作:

pip install -U <Package_Name>

这个在我使用Windows 10 20H2和Python 3.8解决了我的问题。 - Miguel Tomás

8

对于我来说(在Windows上),我不得不重新启动终端并以管理员身份运行它(如果您使用的是PyCharm终端,请简单地关闭PyCharm,然后以管理员身份重新打开它,然后再尝试),这解决了问题并成功安装。

祝你好运


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