Вопрос или проблема
Я попытался создать виртуальную среду Python с помощью virtualenv
.
Я ввожу virtuelenv env --python=python3
и получаю ошибку
PermissionError: [Errno 1] Operation not permitted: '/mnt/d/venv/bin/python3'
Поэтому я использовал команду с sudo
и ввел sudo virtualenv env --python=python3
На этот раз команда сработала, теперь я активирую среду и пытаюсь установить что-то используя pip, получаю
Could not install packages due to an EnvironmentError: [Errno 1] Operation not permitted
Я знаю, что если использовать pip
с sudo, он будет устанавливать пакеты для глобальных пакетов сайта, а не пакетов виртуальной среды. Я хочу устанавливать вещи в виртуальную среду.
Я запускаю Ubuntu Bionic на WSL, ранее использовал Ubuntu Xenial и не сталкивался с этой проблемой.
пожалуйста, посоветуйте.
Это может быть связано с тем, что вы работаете в среде WSL.
Некоторые сообщают о таком поведении при запуске на Linux,
но в папке, которая смонтирована на раздел “FAT32” –
см. блог-пост Криса Лопе:
permissionerror: [errno 1] operation not permitted
Я сталкивался с таким поведением при запуске в Ubuntu VM
в папке, которая была смонтирована на хост-ОС (Windows-NTFS) как тип ‘vboxsf’.
.
Ответ или решение
Конечно, давайте разберёмся с данной проблемой установки пакетов и ошибкой "EnvironmentError: [Errno 1] Operation not permitted" в виртуальной среде Python.
Причины проблемы
-
Раздел файловой системы:
Ошибка может быть вызвана тем, что вы создаёте виртуальную среду в разделе, где файловая система не поддерживает необходимые разрешения. Например, если вы работаете в WSL и создаёте окружение в разделе, который смонтирован в Windows как FAT32 или NTFS, это может ограничить операции с файлами, так как эти файловые системы не поддерживают POSIX-разрешения на файла. -
Использование
sudo
:
Использованиеsudo
для создания виртуальной среды стало причиной того, что файлы в среде имеют права суперпользователя, что может блокировать установку пакетов, так как ваш обычный пользователь не имеет соответствующих прав доступа.
Решения проблемы
-
Использование другого раздела:
Попробуйте создать виртуальную среду в папке, расположенной в файловой системе с поддержкой POSIX-разрешений, например, в домашней директории вашего WSL (/home/username/
). Это обеспечит корректную работу системы разрешений, и ошибка "Operation not permitted" не возникнет. -
Пересоздание виртуальной среды без
sudo
:
Необходимость использованияsudo
для создания виртуальной среды указывает на проблему с правами доступа. Убедитесь, что у вашего пользователя есть все права доступа на директорию, где создаётся среда. Это можно сделать следующими командами:sudo chown -R $USER:$USER /mnt/d/venv virtualenv env --python=python3
-
Использование WSL2:
Если вы используете старую версию WSL (WSL1), обновление до WSL2 может решить множество проблем, связанных с файловыми системами и их интеграцией.
Профилактические меры
- Работа с WSL: Убедитесь, что ваш WSL настроен так, чтобы использовать файловую систему Linux для создания и работы с проектами, минимизируя взаимодействие с файловыми системами Windows, которые могут иметь другие ограничения.
- Изучите документацию WSL2: Ознакомьтесь с документацией по WSL2, так как он предлагает улучшенную совместимость с Linux-файловыми системами и обычно избегает подобных конфликтов.
Если вы следуете этим рекомендациям, проблема должна быть решена. В будущем избегайте использования sudo
при работе с виртуальными средами и осуществляйте рабочие процессы Python в средах, обеспечивающих надлежащее управление разрешениями.