|
Новичок
Регистрация: 08.06.2004
Сообщений: 6
С нами:
11536981
Репутация:
0
|
|
Как настроить виртуальное окружение 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. Это не просто удобство, а основа порядка в ваших проектах. Обсуждайте, делитесь лайфхаками, вопросы приветствуются!
|