В Windows, если вы попытаетесь использовать pip
для обновления, внутри virtualenv вы можете получить таинственную ошибку «Отказано в доступе». Например:
D:\scratch\> C:\Program Files\Python\3.7.4\x64\python.exe -m venv D:\scratch\my-venv
D:\scratch\> D:\scratch\my-venv\Scripts\activate
(my-venv) D:\scratch\> pip install --upgrade pip
Collecting pip
Downloading pip-19.3.1-py2.py3-none-any.whl (1.4MB)
Installing collected packages: pip
Found existing installation: pip 19.0.3
Uninstalling pip-19.0.3:
Could not install packages due to an EnvironmentError:
[WinError 5] Access is denied: 'd:\\scratch\\my-venv\\scripts\\pip.exe'
Consider using the `--user` option or check the permissions.
Это происходит независимо от того, имеет ли командная строка права администратора. Мы знаем, что у нас есть доступ на запись ко всему внутри d:\scratch\my-venv
, потому что мы только что создали его с помощью начальной команды python -m venv
. Совет по использованию опции --user
бесполезен, так как мы хотим обновить версию pip внутри virtualenv , чего не будет делать --user
.
Что может быть не так,и как правильно обновить pip внутри virtualenv в Windows?