pip卸载时出现PermissionError



我可以安装一个包:

pip install brotli

但如果我试图删除,它会失败:

PS D:Desktop> pip uninstall -y brotli
Found existing installation: Brotli 1.0.9
Uninstalling Brotli-1.0.9:
Successfully uninstalled Brotli-1.0.9
ERROR: Exception:
Traceback (most recent call last):
File "C:pythonlibsite-packagespip_internalclibase_command.py", line 167, in exc_logging_wrapper
status = run_func(*args)
File "C:pythonlibsite-packagespip_internalcommandsuninstall.py", line 102, in run
uninstall_pathset.commit()
File "C:pythonlibsite-packagespip_internalreqreq_uninstall.py", line 420, in commit
self._moved_paths.commit()
File "C:pythonlibsite-packagespip_internalreqreq_uninstall.py", line 273, in commit
save_dir.cleanup()
File "C:pythonlibsite-packagespip_internalutilstemp_dir.py", line 173, in cleanup
rmtree(self._path)
File "C:pythonlibsite-packagespip_vendortenacity__init__.py", line 326, in wrapped_f
return self(f, *args, **kw)
File "C:pythonlibsite-packagespip_vendortenacity__init__.py", line 406, in __call__
do = self.iter(retry_state=retry_state)
File "C:pythonlibsite-packagespip_vendortenacity__init__.py", line 362, in iter
raise retry_exc.reraise()
File "C:pythonlibsite-packagespip_vendortenacity__init__.py", line 195, in reraise
raise self.last_attempt.result()
File "concurrentfutures_base.py", line 439, in result
File "concurrentfutures_base.py", line 391, in __get_result
File "C:pythonlibsite-packagespip_vendortenacity__init__.py", line 409, in __call__
result = fn(*args, **kwargs)
File "C:pythonlibsite-packagespip_internalutilsmisc.py", line 124, in rmtree
shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler)
File "shutil.py", line 747, in rmtree
File "shutil.py", line 617, in _rmtree_unsafe
File "shutil.py", line 615, in _rmtree_unsafe
PermissionError: [WinError 5] Access is denied: 'C:\Windows\Temp\pip-uninstall-fi5xmcvd\_brotli.cp310-win_amd64.pyd'

奇怪的是,在失败后,我可以回去手动删除文件夹,没有问题:

PS D:Desktop> python.exe
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import shutil
>>> shutil.rmtree('C:\Windows\Temp\pip-uninstall-fi5xmcvd')

我在windows 上使用python

问题出在Pip代码中,这里[1]:

from pip._vendor.requests.models import Request, Response

一旦进行导入,则由pip本身导入brotli文件,并且所以在pip退出之前不能删除它。这是一个pip问题,而不是brotli或任何其他包装。

  1. https://github.com/pypa/pip/blob/b2b7aefe/src/pip/_internal/exceptions.py#L13

如果有人想卸载brotli,您可以直接删除<YOUR PYTHON PATH>libsite-packages文件夹下的相关文件或文件夹。这在anaconda和普通python环境中都有效。

最新更新