回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我已经完成了一个全新的Windows 10安装,安装了python、cygwin和一个名为ConEmu的改进控制台。在安装Python3.4.3之后,我执行:</p>
<pre><code>pip install -U pip
</code></pre>
<p>得到了这个错误。</p>
<pre><code>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'
</code></pre>
<p>我使用预定义的管理员帐户登录,Python的temp dir和installation dir(C:\ Anwendungsentwicklung\Python34)具有完全访问权限。</p>
<p>请允许我通过设置不同的权限来测试所有变体,但Windows不允许我这样做。我甚至在“安全”选项卡中添加了“所有人”,但这没有帮助,尽管我记得它是用这个“技巧”在Windows7上工作的。一定是Windows 10有问题。有人能帮忙吗??</p>
<p><a href="https://i.stack.imgur.com/HCuYy.png" rel="noreferrer"><img src="https://i.stack.imgur.com/HCuYy.png" alt="enter image description here"/></a></p>
<hr/>
<p>这是完整的回溯</p>
<pre><code> 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'
</code></pre>
<p>现在我在“c:\ anwendungsentwicklung\python34\lib\shutil.py”中添加了一个断点:</p>
<pre><code># 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())
</code></pre>
<p>当我执行时</p>
<pre><code>os.unlink(fullname) # 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t- uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'
</code></pre>
<p>我得到这个<code>PermissionError</code>,所以我用</p>
<pre><code>oct(os.stat(fullname)[ST_MODE])
</code></pre>
<p>它返回:“0o100777”</p>
<p>如果我是对的,这意味着所有人(所有者、组和其他人)都可以获得完全许可。</p>
<p>我很沮丧:/
有人有主意吗?</p>