Новый проект на python через venv
-
Я каждый раз забываю как делать новый проект на
python
черезvenv
. По этому для себя и для кого-то еще сделаю заметку.Возможно эту заметку будут читать новички, по этому начну с банальщины.
Создаем папку проекта:mkdir my_project && cd my_project
Создаем виртуальное окружение:
python3 -m venv venv
Активируем окружение:
source venv/bin/activate
Далее приступаем к работе, устанавливаем пакеты и так далее.
Когда работа завершена деактивируем окружение:deactivate
Ну или можно вообще делать все в одну строчку:
mkdir PROJECT_NAME && cd PROJECT_NAME && python3 -m venv venv && source venv/bin/activate
Меняем имя только проекта.
-
Кстати бывает на WSL иногда простыми командами не обойтись.
К примеру, мы запустили
python3 -m venv venv
, но получаем в консоли ошибку:Error: Command '['/home/user/project/venv/bin/python3', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
И даже есть посмотреть через
ls -la
, всего скорее папкаvenv
будет, но при активацииsource venv/bin/activate
консоль может выдать --bash: venv/bin/activate: No such file or directory
.С этим поможет справится следующее:
rm -rf venv # удаляем папку venv python3 -m venv venv --without-pip # запускаем окружение но с флагом, что устанавливаем pip отдельно source venv/bin/activate # активируем и проверяем # качаем pip отдельно и запускаем curl https://bootstrap.pypa.io/get-pip.py | python
После этой манипуляции должно все заработать.
Ну а теперь о самой проблему почему это может возникнуть по крайне мере на Ubunta в WSL.
С флагом
--without-pip
venv
работает, потому что:
-Создается только базовая структура виртуального окружения- НЕ вызывается модуль
ensurepip
для установкиpip
- Все файлы создаются нормально, включая
activate
Без флага
--without-pip
venv
падает, потому что:- Python по умолчанию пытается установить
pip
черезensurepip
- Модуль
ensurepip
отсутствует или сломан в Ubuntu - Процесс прерывается на этапе установки
pip
- НЕ вызывается модуль
-
Дополню, что возможно такие конфликты могут возникать из-за версий самого питухона.
К примеру если вы сидели на версии 3.10, а перешли на 3.13, то стоит установить явно:
apt install python3.13-venv
А после проделать изначальную манипуляцию, только уже с указание для нужной версии:
# Удали старую папку rm -rf venv # Создай venv с Python 3.13 python3.13 -m venv venv # Активируй source venv/bin/activate
Питон конечно прикольный, но вот вся эта вазнья просто вымораживает… В том же js (спасибо за npm), ты точно знаешь что вот у тебя папка там есть node_modules и что в этой папке конкретно твой проект с твоими локальными пакетами и средой разработки.
Почему так происходит
В Ubuntu каждая версия Python требует свой пакет venv:
Python 3.10 → python3.10-venv
Python 3.11 → python3.11-venv
Python 3.12 → python3.12-venv
Python 3.13 → python3.13-venv -
нужны дополнения для windows
-
@Jspi ну это под WSl либо на Ubuntu сразу, зачем вообще тебе виндоус ?
© 2024 - 2025 ExLends, Inc. Все права защищены.