#python #environment-variables #python-venv
#python #переменные среды #python-venv
Вопрос:
Я использую python venv для создания виртуальных сред. Но, поскольку я работаю с несколькими проектами с разными виртуальными средами, я не хочу вручную устанавливать переменные среды каждый раз, когда переключаюсь на другой проект.
Есть ли способ автоматически устанавливать переменные среды venv при активации venv?
Какова наилучшая практика для решения этой проблемы?
Ответ №1:
Хорошей практикой является использование dotenv
. Вы можете загрузить свою среду, поместив переменные среды в файл с именем .env
, и всякий раз, когда вы хотите загрузить среду, просто используйте строки:
from dotenv import load_dotenv
load_dotenv()
Это имеет то преимущество, что оно существует только в рамках того, что вы запускаете один скрипт, поскольку он, по сути, работает как вызов os.environ['variable'] = 'value'
несколько раз.
Комментарии:
1. Кажется, это хорошее решение. Но я хочу подчеркнуть эту тему… есть ли способ сделать это в области venv?
Ответ №2:
Активация виртуальной среды — это не что иное, как поиск сценария оболочки. Вы можете отредактировать этот скрипт, чтобы задать любые переменные, которые вам нравятся. Вероятно, вы также захотите отредактировать определение deactivate
, чтобы очистить или откатить все изменения, внесенные вами в среду.
Ответ №3:
вам нужно написать сценарий bash (в случае, если вы используете оболочку bash), где вы указали конкретную команду, которая активирует среду project python и добавит переменную envrionment для конкретного проекта в системную среду. и удалите переменную среды при выходе из среды project python.
но я не считаю, что это хороший / правильный способ сделать что-то. Решение @mz будет правильным, если вы определяете .env
файл и определяете в нем переменную env. и использовать load_env
для чтения переменной env при запуске проекта
Ответ №4:
Эта концепция основана на двух вариантах Django. Я реализовал это с помощью venv.
- Откройте сценарий Windows PowerShell в вашей виртуальной среде, созданный venv.
- Скрипт находится по адресу venv/Scripts/Activate.ps1
- В нижней части файла вы увидите эту строку кода:
$env:VIRTUAL_ENV = $VenvDir
- Ниже этого кода введите переменную среды следующим образом:
$env:VARIABLE_NAME = 'variable_value'
Та же концепция, если вы используете командную строку для активации среды, вам нужно будет поместить переменные среды в venv/Scripts/activate.bat