python - Windows 10 和 pip 升级 - 访问被拒绝

标签 python windows pip

我完成了全新的 Windows 10 安装,安装了 python、cygwin 和一个名为 ConEmu 的改进控制台。安装 python 3.4.3 后,我执行:

pip install -U pip

得到了这个错误。

File "C:\Anwendungsentwicklung\Python34\lib\site-packages\pip\utils\__init__.py", line 70, in rmtree_errorhandler
  os.makedirs(path)
PermissionError: [WinError 5] Zugriff verweigert:  'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-dxm8d3xg-uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'

我使用预定义的管理员帐户登录,临时目录以及 Python 的安装目录 (C:\Anwendungsentwicklung\Python34) 具有完全访问权限。

拜托,我已经通过设置不同的权限测试了所有变体,但 Windows 不允许我这样做。我什至将“Everyone”添加到安全选项卡,但这并没有帮助,尽管我记得它是通过这个“技巧”与 Windows 7 一起工作的。这一定是 Windows 10 的问题。有人可以帮忙吗??

enter image description here


这是完整的追溯

  Exception:
Traceback (most recent call last):
File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 372, in  _rmtree_unsafe
  os.unlink(fullname)
PermissionError: [WinError 5] Zugriff verweigert:  'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t- uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\basecommand.py", line 232, in main
  logger.critical('Operation cancelled by user')
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\commands\install.py", line 347, in run
  ensure_dir(options.target_dir)
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\req\req_set.py", line 560, in install
  missing_requested = sorted(
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\req\req_install.py", line 677, in commit_uninstall
  logger.debug(
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\req\req_uninstall.py", line 153, in commit
  self.save_dir = None
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\utils\__init__.py", line 58, in rmtree
  SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS
File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 484, in rmtree
  return _rmtree_unsafe(path, onerror)
File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 368, in _rmtree_unsafe
  _rmtree_unsafe(fullname, onerror)
File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 368, in _rmtree_unsafe
  _rmtree_unsafe(fullname, onerror)
File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 368, in _rmtree_unsafe
  _rmtree_unsafe(fullname, onerror)
File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 376, in _rmtree_unsafe
  print(fullname)
File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\utils\__init__.py", line 70, in rmtree_errorhandler
  try:
PermissionError: [WinError 5] Zugriff verweigert: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t-uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'

现在我在“c:\anwendungsentwicklung\python34\lib\shutil.py”中添加了一个断 pip :

# version vulnerable to race conditions
def _rmtree_unsafe(path, onerror):
try:
    if os.path.islink(path):
        # symlinks to directories are forbidden, see bug #1669
        raise OSError("Cannot call rmtree on a symbolic link")
except OSError:
    onerror(os.path.islink, path, sys.exc_info())
    # can't continue even if onerror hook returns
    return
names = []
try:
    names = os.listdir(path)
except OSError:
    onerror(os.listdir, path, sys.exc_info())
for name in names:
    fullname = os.path.join(path, name)
    try:
        mode = os.lstat(fullname).st_mode
    except OSError:
        mode = 0
    if stat.S_ISDIR(mode):
        _rmtree_unsafe(fullname, onerror)
    else:
        try:
            #import pdb
            os.unlink(fullname)
            #pdb.set_trace()
        except OSError:
            import pdb; pdb.set_trace()
            print(fullname)
            import getpass
            print(getpass.getuser())
            onerror(os.unlink, fullname, sys.exc_info())
try:
    os.rmdir(path)
except OSError:
    onerror(os.rmdir, path, sys.exc_info())

当我执行

os.unlink(fullname) # 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t- uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'

我得到这个PermissionError,所以我检查了这个.exe文件的权限

oct(os.stat(fullname)[ST_MODE])

它返回:'0o100777'

如果我是对的,这意味着每个人(所有者、组和其他人)的完全许可。

我很沮丧:/ 有人有想法吗?

最佳答案

讨论 here ,这是 Windows 限制。简而言之,pip.exe 文件正在使用中,因此被锁定,无法删除。使用 python -m pip install --upgrade pip

关于python - Windows 10 和 pip 升级 - 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126940/

相关文章:

python - 将 python 数据框中的特定列转储为行

windows - 处理函数<SNR> 91_NetrwBrowseChgDir :时检测到错误

windows - Emacs 中的路径名翻译,用于从远程(ssh 编译)错误文件名查找本地源文件路径

c++ - 为目录创建文件映射

python - pip 命令下的 cx_Oracle 在 python27 上失败

python - Pip 不会安装 setup.py 中使用 install_requires 声明的依赖项

python - 从 QGIS Python Console 查找 Python 脚本的目录

python - 难以按人口统计提取 IMDb 评级(使用 IMDbpy)

python - 名称错误 : name 'install' is not defined when installing packages using pip

python - 如何在字符串中查找char并获取所有索引?