我正在使用适用于 Linux 的 Windows 子系统,运行 Debian,升级到 Buster。我也使用远程开发配置了 Visual Studio Code。卸载了 python2.7,并通过创建符号链接(symbolic link) /usr/bin/python -> /usr/bin/python3 将 python3 作为我的默认值。

因此,在我的主目录中,作为当前用户,我创建了一个 virtualenv: python -m virtualenv -p python3 venv ,一切都很好。

然后我继续激活它。我主要使用fish,但运行bash时也会出现这个问题。 source venv/bin/activate.fish 。一切都很好,它有效。

然后,我尝试安装我的包 python setup.py install ,它工作正常:

running install
running bdist_egg
running egg_info
writing myproj.egg-info/PKG-INFO writing dependency_links to myproj.egg-info/dependency_links.txt
...

然后它继续安装依赖项。
Reading https://pypi.org/simple/jmespath/
Downloading https://files.pythonhosted.org/packages/83/94/7179c3832a6d45b266ddb2aac329e101367fbdb11f425f13771d27f225bb/jmespath-0.9.4-py2.py3-none-any.whl#sha256=3720a4b1bd659dd2eecad0666459b9788813e032b83e7ba58578e48254e0a0e6
Best match: jmespath 0.9.4
Processing jmespath-0.9.4-py2.py3-none-any.whl
Installing jmespath-0.9.4-py2.py3-none-any.whl to /home/ap/projects/myproj/venv/lib/python3.7/site-packages
error: [Errno 13] Permission denied: '/home/ap/projects/myproj/venv/lib/python3.7/site-packages/jmespath-0.9.4-py3.7.egg/jmespath-0.9.4.dist-info' -> '/home/ap/projects/myproj/venv/lib/python3.7/site-packages/jmespath-0.9.4-py3.7.egg/EGG-INFO'

所有目录都有权限,我是所有者,从 CLI 工作创建符号链接(symbolic link)。我什至尝试通过首先使用 sudo su 提升权限来做到这一 pip ,但仍然得到“权限被拒绝”。

我尝试将 pip 和 setuptools 降级为主要版本,但没有帮助。我已经无数次在 Linux 上这样做了,一切都很好,我只是不明白这可能是什么原因。
pip list 输出:
Package    Version
---------- -------
pip        19.2.1
setuptools 41.0.1
wheel      0.33.4

最佳答案

显然这是因为底层文件系统是 NTFS,而 Linux 处理打开的文件与 Windows 不同。从 WSL 打开文件后,显然它被锁定,并且不能被覆盖。因此,唯一有效的方法是关闭 Visual Studio Code,进行安装、升级等等,然后重新打开它。

这是一种狂野的预感,因此请谨慎对待。

关于python - Errno 13 权限被拒绝,在 WSL、virtualenv 中,即使是 root,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57354765/

10-12 16:51
查看更多