Для начала ты должен понимать, зачем вообще нужно виртуальное окружение.
Каждое приложение как правило разворачивается в изолированной среде. Туда устанавливаются только те зависимости, которые нужны для работы этого приложения (Как правило, зависимости указываются в requirements.txt/pyproject.toml и т.д.).
При разработке тебе ничто не мешает вообще не использовать виртуальное окружение, но рано или поздно ты столкнешься с проблемой несовместимости библиотек на разных проектах.
Поэтому хорошей практикой является использование отдельного виртуального окружения для каждого проекта.
При локальном запуске ты выбираешь какой именно интерпретатор python использовать (оригинальный, установленный в системе или виртуальный). Ты просто указываешь путь к нужному тебе интерпретатору в своей среде программирования или при запуске через терминал вызываешь интерпретатор по указанному пути (если не активировано виртуальное окружение).
Весь этот спич вот к чему: ты можешь хранить виртуальные окружения где угодно.
Хорошими практиками являются:
- хранение виртуального окружения в корневой папке проекта (venv/. venv). !Обязательно добавлять эту папку в . gitignore!
-создать папку для виртуальных окружений и хранить все виртуальные окружения в ней