Новый проект на 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-pipvenvработает, потому что:
-Создается только базовая структура виртуального окружения- НЕ вызывается модуль
ensurepipдля установкиpip - Все файлы создаются нормально, включая
activate
Без флага
--without-pipvenvпадает, потому что:- 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. Все права защищены.