![]() |
Как настроить виртуальное окружение Python — обсуждение
Как настроить виртуальное окружение Python — обсуждение
Зачем нужны виртуальные окружения Виртуальное окружение — это такая «комнатка» для каждого вашего проекта на Python, где есть свои библиотеки и настройки. Представьте, что у вас несколько проектов, и каждый требует разные версии одних и тех же библиотек. Без виртуальных окружений придётся постоянно мучиться с глобальными установками, что ведёт к конфликтам и ошибкам. Например, один проект работает на Django 2, а другой — на Django 3. Если установить только одну версию глобально, второй проект сломается. Вот тут виртуалки и приходят на помощь. Что же это за песочница? По сути, это каталог с отдельной копией интерпретатора Python и папкой с установленными пакетами. Когда вы запускаете скрипт из виртуального окружения, он использует именно те библиотеки, что в этом окружении, а не системные. Получается, вы изолируете проекты друг от друга без головной боли. Как создавать виртуальное окружение Самый простой и стандартный способ — использовать встроенный модуль venv, который есть в Python 3.3 и выше. Команда для создания окружения очень простая. На терминале в папке проекта пишем: python -m venv env Где `env` — имя папки, в которую засунется виртуальное окружение. Можно назвать как угодно, но обычно называют именно так, чтобы потом не забыть. Как активировать виртуальное окружение Активация — ключевой момент, без неё вы работаете с глобальным Python, а не с изолированным. Процесс немного отличается в зависимости от операционной системы. Если вы на Windows, то в командной строке или PowerShell пишем: env\Scripts\activate А в Linux или macOS: source env/bin/activate Если видим, что имя окружения появилось в начале строки терминала, всё успешно. После активации все установки pip, запуск скриптов и прочее ведутся внутри этого виртуального окружения. Как устанавливать пакеты и что с этим делать Пока виртуалка активна, ставьте библиотеки привычно: pip install requests Они установятся только в текущее окружение. Если захотите зафиксировать список зависимостей для других (например, для коллег или сервера), используйте: pip freeze > requirements.txt А чтобы потом восстановить всё это на другой машине или окружении: pip install -r requirements.txt Важный момент: не забывайте всегда активировать окружение перед работой с проектом, если этого не делать — установленные пакеты будут глобальными. Что делать если не работает? Иногда при запуске команды активации появляется ошибка, особенно в Windows, связанная с политикой безопасности PowerShell. Если видите что-то вроде «execution of scripts is disabled», надо разрешить запуск: Запустите PowerShell от имени администратора и выполните: Set-ExecutionPolicy RemoteSigned Это даст возможность запускать скрипты локально, которые подписаны или написаны вами. Типичные ошибки при работе с виртуальным окружением 1. Неактивированное окружение. Очень частая история — загрузили проект, взяли команду установить пакеты, а виртуалка не была включена. Пакеты улетают глобально, а проект всё равно ломается. 2. Неправильный путь при активации. Особенно в Windows терминальная среда путается, если запускаете в PowerShell, CMD и Git Bash по-разному. 3. Забытые зависимости. Поставили новые библиотеки, но не экспортировали requirements.txt — при переносе проекта на другую машину возникнут проблемы. 4. Использование старого pip. Обновляйте pip внутри виртуалки командой: python -m pip install --upgrade pip Иначе не сможете ставить свежие пакеты. 5. Удалили папку с виртуальным окружением, забыв, что там лежат все установленные библиотеки. Тогда придётся создавать заново и устанавливать пакеты. Расширенный практический пример Допустим, вы пишете веб-приложение на Flask: 1. Создаёте папку проекта: mkdir my_flask_app cd my_flask_app 2. Создаёте виртуальное окружение: python -m venv env 3. Активируете его: source env/bin/activate (для Linux/macOS) или env\Scripts\activate (для Windows) 4. Обновляете pip: python -m pip install --upgrade pip 5. Ставите Flask: pip install Flask 6. Пишете простой код app.py: from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Привет с Flask в виртуальном окружении!" 7. Запускаете: python app.py 8. Когда всё готово, сохраняете зависимости: pip freeze > requirements.txt 9. Если захотите перенести или запустить на другом компьютере, просто повторите шаги создания и активации виртуалки, а потом: pip install -r requirements.txt Чек-лист для настройки виртуального окружения - Установлен Python версии не ниже 3.3 - Перешли в папку проекта в терминале - Создали виртуальное окружение: python -m venv имя_папки - Активировали окружение (source или \Scripts\activate) - Обновили pip внутри виртуалки - Установили необходимые пакеты через pip - Создали requirements.txt через pip freeze - Перед запуском всегда активируйте окружение - Если проблемы с активацией в Windows — проверьте ExecutionPolicy - Не удаляйте папку с виртуальным окружением, пока не готовы FAQ В: Можно ли иметь несколько виртуальных окружений для одного проекта? О: Обычно нет смысла, лучше одно полноценное с нужными пакетами. Но если хотите тестировать разные версии — да, можно создать пару. В: Можно ли использовать virtualenv вместо venv? О: Можно. virtualenv был популярнее раньше и работает на Python 2, но сейчас venv — стандартный и проще. virtualenv иногда лучше справляется с особенностями. В: Как выйти из виртуального окружения? О: Просто пропишите команду deactivate в терминале, и вы вернётесь к глобальному Python. В: Что делать, если забыл активировать виртуалку и поставил пакеты глобально? О: Придётся либо переустановить их в виртуалке, либо удалить из глобального пространства вручную. Лучше не забывать сразу активировать. В: Можно ли использовать виртуальные окружения для Jupyter Notebook? О: Да, нужно просто установить ipykernel внутри виртуалки и добавить это окружение как ядро в Jupyter. На практике виртуальные окружения — это мастхэв для любого, кто серьёзно занимается программированием на Python. Это не просто удобство, а основа порядка в ваших проектах. Обсуждайте, делитесь лайфхаками, вопросы приветствуются! |
| Время: 10:45 |