【问题标题】:"Access is denied" while upgrading pip.exe on Windows在 Windows 上升级 pip.exe 时出现“访问被拒绝”
【发布时间】:2015-08-22 08:48:16
【问题描述】:

pip 要求我升级并带有一条消息:

You are using pip version 7.0.1, however version 7.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

所以我运行了该命令,但我得到一个异常 pip 无法卸载旧版本,因为对我的用户目录的访问被拒绝:

收集点 下载 pip-7.0.3-py2.py3-none-any.whl (1.1MB) 100% |################################| 1.1MB 292kB/s 安装收集的包:pip 找到现有安装:pip 7.0.1 卸载 pip-7.0.1: 成功卸载 pip-7.0.1 例外: 回溯(最近一次通话最后): 文件“C:\Python27\lib\site-packages\pip\basecommand.py”,第 223 行,在 main 状态 = self.run(选项,参数) 运行中的文件“C:\Python27\lib\site-packages\pip\commands\install.py”,第 297 行 root=options.root_path, 安装中的文件“C:\Python27\lib\site-packages\pip\req\req_set.py”,第 633 行 要求.commit_uninstall() 文件“C:\Python27\lib\site-packages\pip\req\req_install.py”,第 734 行,在 commit_uninstall self.uninstalled.commit() 提交中的文件“C:\Python27\lib\site-packages\pip\req\req_uninstall.py”,第 153 行 rmtree(self.save_dir) 文件“C:\Python27\lib\site-packages\pip\_vendor\retrying.py”,第 49 行,位于 Wrapped_f 返回重试(*dargs, **dkw).call(f, *args, **kw) 文件“C:\Python27\lib\site-packages\pip\_vendor\retrying.py”,第 212 行,调用中 提高尝试.get() 文件“C:\Python27\lib\site-packages\pip\_vendor\retrying.py”,第 247 行,在 get 六.reraise(self.value[0], self.value[1], self.value[2]) 文件“C:\Python27\lib\site-packages\pip\_vendor\retrying.py”,第 200 行,调用中 尝试=尝试(fn(*args,**kwargs),尝试编号,假) rmtree 中的文件“C:\Python27\lib\site-packages\pip\utils\__init__.py”,第 89 行 onerror=rmtree_errorhandler) rmtree 中的文件“C:\Python27\lib\shutil.py”,第 247 行 rmtree(全名,ignore_errors,onerror) rmtree 中的文件“C:\Python27\lib\shutil.py”,第 247 行 rmtree(全名,ignore_errors,onerror) rmtree 中的文件“C:\Python27\lib\shutil.py”,第 252 行 onerror(os.remove,全名,sys.exc_info()) rmtree_errorhandler 中的文件“C:\Python27\lib\site-packages\pip\utils\__init__.py”,第 101 行 函数(路径) WindowsError:[错误 5] 访问被拒绝:'c:\\users\\chris\\appdata\\local\\temp\\pip-ossyhh-uninstall\\python27\\scripts\\pip.exe'

我运行的是 Windows 8.1,但我在另一台运行 Windows 7 的机器上也遇到了同样的错误。它似乎并没有停止新版本的安装,但最终我的 pip 文件夹留在了我的临时目录。有谁知道为什么会发生这种情况或我该如何纠正?

编辑1: 奇怪的是,使用管理员权限运行升级会引发 new 异常:

File "C:\Python27\lib\site-packages\pip-7.0.1-py2.7.egg\pip\_vendor\distlib\scripts.py", line 302, in _get_launcher
result = finder(distlib_package).find(name).bytes
AttributeError: 'NoneType' object has no attribute 'bytes'`

并且升级完全失败。

编辑2: 解决此问题的唯一方法似乎是使用 easy_install 升级 pip(-U 或 -m 选项),但如果 pip 无法自行升级,在其预期(并声明)时,这对我来说似乎是一个问题) 功能就是这样做的。

【问题讨论】:

  • 您是否在没有管理员权限的情况下从命令提示符运行?
  • 这也可能是个问题!以管理员身份运行
  • 我想我读到这是 appdata\local\temp 文件夹上设置的权限问题。您可以尝试检查它的权限。
  • Python 2.7.10 和 pip 7.0.1 仍然存在问题(升级到 7.1.2)。

标签: python windows python-2.7 pip


【解决方案1】:

我最近在 Windows 7 机器上遇到了同样的问题。我以管理员身份运行命令提示符(来自您的 cmets),然后输入 pip install --upgrade pip

它从 wazoo 中返回错误消息,但是当我再次尝试执行此操作时 (pip install --upgrade pip),它告诉我 pip 已经是最新的了。然后pip -V 告诉我我有 pip 7.0.3。

不知道发生了什么。尝试在 Windows 上获取 python 包似乎非常困难。希望对您有所帮助。

另外,我使用的是 python 3.5,可能会有所不同。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我只是在我的 mac 终端上使用了 SUDO 命令,它就起作用了。下面是终端输出。

    sudo pip install -U pip

    Anuvrats-MacBook-Air:~ anuvrattiku$ pip -V
    pip 7.1.2 from /Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg (python 2.7)
    Anuvrats-MacBook-Air:~ anuvrattiku$ **sudo pip install -U pip**
    Password:
    The directory '/Users/anuvrattiku/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    The directory '/Users/anuvrattiku/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    Collecting pip
    Downloading pip-8.0.2-py2.py3-none-any.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 272kB/s 
    Installing collected packages: pip
    Found existing installation: pip 7.1.2
    Uninstalling pip-7.1.2:
    Successfully uninstalled pip-7.1.2
    Successfully installed pip-8.0.2
    Anuvrats-MacBook-Air:~ anuvrattiku$ 
    

    【讨论】:

      【解决方案3】:

      这里的问题显然是因为您正在运行pip.exe 来升级自身。所以此时要删除的pip.exe实际上是在运行的。解决方法是使用稍微不同的命令行:

      python -m pip install --upgrade pip
      

      这是来自bug report(尽管还有其他人):

      • 访问被拒绝:“... pip.exe”是因为您正在升级 pip 使用在升级中被替换的 pip.exe 包装器。在 Windows 您无法替换正在使用的可执行文件/DLL。你应该使用 python -m pip install --upgrade pip 。 IIRC 这在 文档。

      【讨论】:

        【解决方案4】:

        我在使用 pip-7.1.2 版本安装 matplotlib 时也遇到了这个问题,所以我将它升级到 pip 9.0.1。

        但是,在更新它时,我收到了拒绝访问 pip.exe 的错误,但是当我使用 pip -v 检查版本时,它已更新。我只需运行 pip install matplotlib。它对我有用。

        D:\Users\703186511>pip install --upgrade pip
        

        或者试试

        D:\Users\703186511>python -m pip install --upgrade pip
        D:\Users\703186511>pip -V
        D:\Users\703186511>pip install matplotlib
        

        【讨论】:

          猜你喜欢
          • 2018-03-15
          • 1970-01-01
          • 2015-11-14
          • 2022-11-12
          • 2020-08-24
          • 2017-01-10
          • 1970-01-01
          • 2011-04-29
          • 2015-09-19
          相关资源
          最近更新 更多