Как создать файл окружения python

Обновлено: 07.07.2024

Модуль venv обеспечивает поддержку создания облегченных «виртуальных сред» с собственными каталогами сайтов, которые могут быть изолированы от системных каталогов сайтов. Каждая виртуальная среда имеет свой собственный двоичный файл Python (который соответствует версии двоичного файла, который использовался для создания этой среды) и может иметь свой собственный независимый набор установленных пакетов Python в каталогах своего сайта.

Дополнительную информацию о виртуальных средах Python см. в PEP 405.

Создание виртуальных сред¶

Создание виртуальных сред выполняется с помощью команды venv :

Выполнение этой команды создает целевой каталог (создавая любые родительские каталоги, которые еще не существуют) и помещает в него файл pyvenv.cfg с домашним ключом, указывающим на установку Python, из которой была запущена команда (обычное имя для целевого каталога .venv ). Он также создает подкаталог bin (или Scripts в Windows), содержащий копию/символическую ссылку на двоичный файл/двоичные файлы Python (в соответствии с платформой или аргументами, используемыми во время создания среды). Он также создает (изначально пустую) поддиректорию lib/pythonX.Y/site-packages (в Windows это Lib\site-packages ). Если указан существующий каталог, он будет использован повторно.

Устарело, начиная с версии 3.6: pyvenv был рекомендованным инструментом для создания виртуальных сред для Python 3.3 и 3.4 и устарел в Python 3.6.

Изменено в версии 3.5: теперь рекомендуется использовать venv для создания виртуальных сред.

В Windows вызовите команду venv следующим образом:

В качестве альтернативы, если вы настроили переменные PATH и PATHEXT для своей установки Python:

Команда, запущенная с параметром -h, покажет доступные параметры:

Изменено в версии 3.9: добавлена ​​опция --upgrade-deps для обновления pip + setuptools до последней версии в PyPI

Изменено в версии 3.4: по умолчанию устанавливается pip, добавлены параметры --without-pip и --copies

Изменено в версии 3.4: в более ранних версиях, если целевой каталог уже существовал, возникала ошибка, если не был указан параметр --clear или --upgrade.

Хотя символические ссылки поддерживаются в Windows, использовать их не рекомендуется. Особо следует отметить, что двойной щелчок по файлу python.exe в проводнике приведет к быстрому разрешению символической ссылки и проигнорирует виртуальную среду.

В Microsoft Windows может потребоваться включить сценарий Activate.ps1, установив политику выполнения для пользователя. Вы можете сделать это, введя следующую команду PowerShell:

PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Созданный файл pyvenv.cfg также включает ключ include-system-site-packages, для которого установлено значение true, если venv запускается с параметром --system-site-packages, иначе false.

Если не указана опция --without-pip, будет вызываться surepip для начальной загрузки pip в виртуальную среду.

Для venv можно указать несколько путей, и в этом случае будет создана идентичная виртуальная среда в соответствии с заданными параметрами для каждого указанного пути.

После создания виртуальной среды ее можно «активировать» с помощью сценария в двоичном каталоге виртуальной среды. Вызов сценария зависит от платформы (должен быть заменен путем к каталогу, содержащему виртуальную среду):

Команда для активации виртуальной среды

PS C:\> \Scripts\Activate.ps1

Когда виртуальная среда активна, для переменной среды VIRTUAL_ENV задается путь к виртуальной среде. Это можно использовать для проверки того, работает ли он в виртуальной среде.

Вам не нужно специально нужно активировать среду; активация просто добавляет двоичный каталог виртуальной среды к вашему пути, так что «python» вызывает интерпретатор Python виртуальной среды, и вы можете запускать установленные скрипты без необходимости использовать их полный путь. Однако все скрипты, установленные в виртуальной среде, должны выполняться без ее активации и автоматически запускаться с Python виртуальной среды.

Вы можете деактивировать виртуальную среду, набрав «деактивировать» в своей оболочке. Точный механизм зависит от платформы и является внутренней деталью реализации (обычно используется сценарий или функция оболочки).

Новое в версии 3.4: сценарии активации fish и csh.

Новое в версии 3.8: сценарии активации PowerShell устанавливаются в соответствии с POSIX для поддержки PowerShell Core.

Виртуальная среда — это среда Python, в которой интерпретатор Python, библиотеки и сценарии, установленные в ней, изолированы от тех, что установлены в других виртуальных средах, и (по умолчанию) любые библиотеки, установленные в «системном» Python, т. е. который устанавливается как часть вашей операционной системы.

Виртуальная среда — это дерево каталогов, содержащее исполняемые файлы Python и другие файлы, указывающие на то, что это виртуальная среда.

Обычные инструменты установки, такие как setuptools и pip, работают с виртуальными средами должным образом. Другими словами, когда виртуальная среда активна, они устанавливают пакеты Python в виртуальную среду без явного указания на это.

Когда виртуальная среда активна (т. е. работает интерпретатор Python виртуальной среды), атрибуты sys.prefix и sys.exec_prefix указывают на базовый каталог виртуальной среды, тогда как sys.base_prefix и sys.base_exec_prefix указывают на установка Python в невиртуальной среде, которая использовалась для создания виртуальной среды. Если виртуальная среда не активна, то sys.prefix совпадает с sys.base_prefix, а sys.exec_prefix совпадает с sys.base_exec_prefix (все они указывают на установку Python в невиртуальной среде).

Когда виртуальная среда активна, любые параметры, изменяющие путь установки, будут игнорироваться во всех файлах конфигурации distutils, чтобы предотвратить непреднамеренную установку проектов за пределами виртуальной среды.

При работе в командной оболочке пользователи могут сделать виртуальную среду активной, запустив сценарий активации в каталоге исполняемых файлов виртуальной среды (точное имя файла и команда для использования файла зависят от оболочки), который предшествует каталогу виртуальной среды. для исполняемых файлов в переменную среды PATH для работающей оболочки. При других обстоятельствах не должно быть необходимости активировать виртуальную среду; скрипты, установленные в виртуальные среды, имеют строку «шебанг», которая указывает на интерпретатор Python виртуальной среды. Это означает, что скрипт будет работать с этим интерпретатором независимо от значения PATH. В Windows обработка строк «шебанг» поддерживается, если у вас установлен Python Launcher для Windows (это было добавлено в Python в версии 3.3 — дополнительные сведения см. в PEP 397). Таким образом, двойной щелчок по установленному сценарию в окне проводника Windows должен запустить сценарий с правильным интерпретатором без какой-либо ссылки на его виртуальную среду в PATH .

Описанный выше высокоуровневый метод использует простой API, который предоставляет механизмы для сторонних создателей виртуальной среды для настройки создания среды в соответствии со своими потребностями, класс EnvBuilder.

класс venv. EnvBuilder ( system_site_packages = False , clear = False , символические ссылки = False , upgrade = False , with_pip = False , prompt = None , upgrade_deps = False ) ¶

Класс EnvBuilder принимает следующие ключевые аргументы при создании экземпляра:

system_site_packages — логическое значение, указывающее, что системные пакеты сайта Python должны быть доступны для среды (по умолчанию False ).

clear — логическое значение, которое, если оно равно true, удалит содержимое любого существующего целевого каталога перед созданием среды.

symlinks — логическое значение, указывающее, следует ли пытаться создать символическую ссылку на двоичный файл Python вместо копирования.

upgrade — логическое значение, которое, если оно равно true, обновит существующую среду с работающим Python — для использования, когда этот Python был обновлен на месте (по умолчанию False ).

with_pip – логическое значение, которое, если оно равно true, гарантирует, что pip будет установлен в виртуальной среде. При этом используется surepip с параметром --default-pip.

prompt — строка, которая будет использоваться после активации виртуальной среды (по умолчанию — None, что означает, что будет использоваться имя каталога среды). Если специальная строка "." указано, в качестве подсказки используется базовое имя текущего каталога.

upgrade_deps — обновить базовые модули venv до последней версии в PyPI

Изменено в версии 3.4: добавлен параметр with_pip

Новое в версии 3.6: добавлен параметр приглашения

Новое в версии 3.9: добавлен параметр upgrade_deps

Создатели сторонних инструментов виртуальной среды могут свободно использовать предоставленный класс EnvBuilder в качестве базового класса.

Возвращенный env-builder — это объект, у которого есть метод create :

Создайте виртуальную среду, указав целевой каталог (абсолютный или относительный к текущему каталогу), который должен содержать виртуальную среду. Метод create либо создаст среду в указанном каталоге, либо вызовет соответствующее исключение.

Метод create класса EnvBuilder иллюстрирует крючки, доступные для настройки подкласса:

Создает каталог среды и все необходимые каталоги и возвращает объект контекста. Это просто держатель атрибутов (таких как пути) для использования другими методами.Каталогам уже разрешено существовать, если были указаны либо очистить, либо обновить, чтобы разрешить работу с существующим каталогом среды.

Создает файл конфигурации pyvenv.cfg в среде.

Создает копию или символическую ссылку на исполняемый файл Python в среде. В системах POSIX, если использовался конкретный исполняемый файл python3.x, будут созданы символические ссылки на python и python3, указывающие на этот исполняемый файл, если только файлы с такими именами уже не существуют.

Устанавливает сценарии активации, соответствующие платформе, в виртуальную среду.

Обновляет основные пакеты зависимостей venv (в настоящее время pip и setuptools) в среде. Это делается путем запуска исполняемого файла pip в среде.

Новое в версии 3.9.

Метод-заполнитель, который можно переопределить в сторонних реализациях для предварительной установки пакетов в виртуальной среде или выполнения других действий после создания.

Изменено в версии 3.7.2: Windows теперь использует сценарии перенаправления для python[w].exe вместо копирования реальных двоичных файлов. В 3.7.2 только setup_python() ничего не делает, если только не запускается из сборки в дереве исходного кода.

Изменено в версии 3.7.3: Windows копирует сценарии перенаправления как часть setup_python() вместо setup_scripts() . В 3.7.2 такого не было. При использовании символических ссылок исходные исполняемые файлы будут связаны.

Кроме того, EnvBuilder предоставляет этот служебный метод, который можно вызывать из setup_scripts() или post_setup() в подклассах, чтобы помочь в установке пользовательских скриптов в виртуальную среду.

install_scripts ( контекст , путь ) ¶

путь — это путь к каталогу, который должен содержать подкаталоги «common», «posix», «nt», каждый из которых содержит сценарии, предназначенные для каталога bin в среде. Содержимое «common» и каталога, соответствующего os.name, копируется после некоторой текстовой замены заполнителей:

__VENV_DIR__ заменяется абсолютным путем к каталогу среды.

__VENV_NAME__ заменяется именем среды (конечный сегмент пути к каталогу среды).

__VENV_PROMPT__ заменяется подсказкой (имя среды в круглых скобках и с последующим пробелом)

__VENV_BIN_NAME__ заменяется именем каталога bin (либо bin, либо Scripts ).

__VENV_PYTHON__ заменяется абсолютным путем к исполняемому файлу среды.

Каталоги могут существовать (при обновлении существующей среды).

Есть также удобная функция на уровне модуля:

венв. create ( env_dir , system_site_packages = False , clear = False , symlinks = False , with_pip = False , prompt = None , upgrade_deps = False ) ¶

Создайте EnvBuilder с указанными аргументами ключевого слова и вызовите его метод create() с аргументом env_dir.

Новое в версии 3.3.

Изменено в версии 3.4: добавлен параметр with_pip

Изменено в версии 3.6: добавлен параметр приглашения

Изменено в версии 3.9: добавлен параметр upgrade_deps

Пример расширения EnvBuilder ¶

Следующий скрипт показывает, как расширить EnvBuilder, реализуя подкласс, который устанавливает setuptools и pip в созданную виртуальную среду:

Чтобы установить и получить переменные среды в Python, вы можете просто использовать модуль os:

Обратите внимание, что использование getenv() или метода get() для ключа словаря вернет None, если ключ не существует. Однако в примере с BAZ, если вы сошлетесь на несуществующий ключ в словаре, это вызовет ошибку KeyError.

Переменные среды полезны, если вы хотите избежать жесткого кодирования учетных данных доступа или других переменных в коде. Например, вам может потребоваться передать учетные данные API для поставщика услуг электронной почты, чтобы отправлять уведомления по электронной почте, но вы не хотите, чтобы эти учетные данные хранились в вашем репозитории кода. Или, возможно, вам нужно, чтобы ваш код функционировал немного по-разному в вашей среде разработки, промежуточной и производственной среде. В этом случае вы можете передать переменную среды, чтобы сообщить приложению, в какой среде оно работает. Это типичные варианты использования переменных среды.

Сохранение локальных переменных env

Вы должны написать свой код Python так, чтобы он мог получить доступ к переменным среды из любой среды, в которой он работает. Это может быть либо ваша локальная виртуальная среда, которую вы используете для разработки, либо служба, в которой вы его размещаете. . Полезным пакетом, упрощающим этот процесс, является Python Decouple, вот как вы можете его использовать.

Сначала установите Python Decouple в локальную среду Python.

После установки создайте файл .env в корне вашего проекта, который затем можно открыть, чтобы добавить переменные среды.

‌Затем вы можете добавить переменные среды следующим образом:

Затем сохраните (WriteOut) файл и выйдите из nano. Ваши переменные среды теперь хранятся в вашем файле .env. Если вы используете git, не забудьте добавить .env в свой файл .gitignore, чтобы не зафиксировать этот файл секретов в своем репозитории кода.

Теперь, когда переменные среды хранятся в файле .env, вы можете получить к ним доступ в коде Python следующим образом:

Преимущество использования подхода, подобного описанному выше, заключается в том, что при развертывании приложения в облачной службе вы можете устанавливать переменные среды с помощью любого метода или интерфейса, которые есть у поставщика, и ваш код Python по-прежнему должен иметь к ним доступ. Обратите внимание, что в коде принято использовать заглавные буквы для имен глобальных констант.

Большинство поставщиков облачных услуг имеют интерфейс командной строки или веб-интерфейс, который позволяет настраивать переменные среды для промежуточной или рабочей среды. Для получения рекомендаций в этих случаях вам необходимо обратиться к их документации о том, как устанавливать переменные среды при использовании их службы.

Присоединяйтесь к сети разработчиков Able

Если вам понравился этот пост, вас может заинтересовать сеть разработчиков Able — новое место, где разработчики могут вести блоги и находить работу.

Приложения создаются для развертывания. В какой-то момент во время разработки вам нужно будет подумать о среде, в которой будет работать ваше приложение, и о потенциально конфиденциальной или специфичной для среды информации, которая потребуется вашему приложению для выполнения своих задач.

Переменные среды — это один из основных способов, с помощью которых разработчики программного обеспечения предоставляют приложению такого рода информацию, однако локальный запуск и тестирование приложения, которое зависит от переменных среды, может вызвать затруднения, если вы устанавливаете эти переменные в среде вашего локального компьютера. .

Процесс установки или изменения переменной среды занимает много времени, и со временем количество переменных среды, которыми вы должны управлять, выходит из-под контроля. Со временем конфликты имен становятся проблемой, и каждая новая переменная требует длинного префикса, чтобы отличать ее от похожих переменных.

Использование файла .env позволит вам использовать переменные среды для локальной разработки, не загрязняя глобальное пространство имен среды. Кроме того, имена и значения переменных среды будут изолированы от того же проекта, в котором они используются.

Файл .env — это текстовый файл, содержащий пары "ключ-значение" всех переменных среды, необходимых вашему приложению. Этот файл включается в ваш проект локально, но не сохраняется в системе управления версиями, чтобы вы не подвергали риску потенциально конфиденциальную информацию.

Выйти из полноэкранного режима

Почти у каждого языка программирования есть пакет или библиотека, которые можно использовать для чтения переменных среды из файла .env, а не из вашей локальной среды. Для Python эта библиотека называется python-dotenv. После установки библиотеки в среднем случае использования python-dotenv требуется добавить в проект всего две строки кода.

Выйти из полноэкранного режима

load_dotenv() сначала будет искать файл .env, и если он его найдет, он загрузит переменные среды из файла и сделает их доступными для вашего проекта, как и любая другая переменная среды.

Выйти из полноэкранного режима

Если переменная среды не найдена в файле .env, load_dotenv будет искать переменную по заданному имени в среде хоста. Это означает, что когда ваш проект выполняется локально и присутствует файл .env, будут использоваться переменные, определенные в файле. Когда ваш проект развертывается в хост-среде, такой как виртуальная машина или контейнер Docker, где файл .env отсутствует, вместо него будут использоваться переменные среды, определенные в хост-среде.

По умолчанию load_dotenv будет искать файл .env в текущем рабочем каталоге или любых родительских каталогах, однако вы также можете указать путь, если ваш конкретный вариант использования требует его хранения в другом месте.

Выйти из полноэкранного режима

Для большинства приложений это вся информация, необходимая для эффективной работы с python-dotenv, однако есть несколько дополнительных функций, о которых вы можете прочитать в python-dotenv документация.

Одним из преимуществ использования файла .env является то, что его становится намного проще разрабатывать с учетом переменных среды на ранних этапах. Размышление об этих вещах на более ранней стадии процесса разработки облегчит вам подготовку приложения к развертыванию.

Если вы развертываете приложение в контейнере Docker, вы можете легко перейти к запуску и тестированию приложения в локальном контейнере, используя флаг --env-file .env с командой запуска docker.Затем Docker установит те же переменные среды, которые вы использовали с помощью python-dotenv в среде контейнера.

Без файла .env переменные среды являются громоздкой, хотя и необходимой частью локального тестирования приложения. Благодаря файлу .env и библиотеке python-dotenv работа с переменными среды становится намного более управляемой, и вы с самого начала будете разрабатывать с учетом развертывания.

Python-dotenv считывает пары "ключ-значение" из файла .env и может задавать их как переменные среды. Это помогает в разработке приложений в соответствии с принципами 12 факторов.

Начало работы

Если ваше приложение берет конфигурацию из переменных среды, например 12-факторное приложение, запускать его в процессе разработки не очень практично, поскольку вам придется устанавливать эти переменные среды самостоятельно.

Чтобы помочь вам в этом, вы можете добавить Python-dotenv в свое приложение, чтобы оно загружало конфигурацию из файла .env, когда он присутствует (например, в процессе разработки), оставаясь при этом настраиваемым через среду:

По умолчанию load_dotenv не переопределяет существующие переменные среды.

Чтобы настроить среду разработки, добавьте .env в корневой каталог вашего проекта:

Синтаксис файлов .env, поддерживаемых python-dotenv, аналогичен синтаксису Bash:

Если вы используете переменные в значениях, убедитесь, что они окружены символами < и >, например $ , поскольку голые переменные, такие как $DOMAIN, не раскрываются.

Возможно, вы захотите добавить .env в свой .gitignore , особенно если он содержит секреты, такие как пароль.

Дополнительную информацию о том, что можно записать в файл .env, см. в разделе "Формат файла" ниже.

Другие варианты использования

Загрузить конфигурацию без изменения среды

Функция dotenv_values ​​работает более или менее так же, как load_dotenv , за исключением того, что она не затрагивает среду, а просто возвращает dict со значениями, проанализированными из файла .env.

Это, в частности, обеспечивает расширенное управление конфигурацией:

Разбирать конфигурацию как поток

load_dotenv и dotenv_values ​​принимают потоки через свой аргумент потока. Таким образом, можно загружать переменные из источников, отличных от файловой системы (например, из сети).

Загрузить файлы .env в IPython

Вы можете использовать dotenv в IPython. По умолчанию он будет использовать find_dotenv для поиска файла .env:

Вы также можете указать путь:

  • -o, чтобы переопределить существующие переменные.
  • -v для большей детализации.

Интерфейс командной строки

Также включен интерфейс командной строки dotenv, который помогает вам управлять файлом .env, не открывая его вручную.

Запустите dotenv --help для получения дополнительной информации об опциях и подкомандах.

Формат файла

Формат не определен официально и со временем совершенствуется. При этом файлы .env должны в основном выглядеть как файлы Bash.

Ключи могут быть без кавычек или в одинарных кавычках. Значения могут быть не в кавычках, в одинарных или двойных кавычках. Пробелы до и после ключей, знаки равенства и значения игнорируются. За значениями может следовать комментарий. Строки могут начинаться с директивы экспорта, что не влияет на их интерпретацию.

Разрешенные управляющие последовательности:

  • в одинарных кавычках: \\ , \'
  • в значениях в двойных кавычках: \\ , \' , \" , \a , \b , \f , \n , \r , \t , \v

Многострочные значения

Значения в одинарных или двойных кавычках могут занимать несколько строк. Следующие примеры эквивалентны:

Расширение переменной

Python-dotenv может интерполировать переменные, используя расширение переменных POSIX.

С помощью load_dotenv(override=True) или dotenv_values() значение переменной является первым из значений, определенных в следующем списке:

  • Значение этой переменной в файле .env.
  • Значение этой переменной в среде.
  • Значение по умолчанию, если указано.
  • Пустая строка.

С load_dotenv(override=False) значение переменной является первым из значений, определенных в следующем списке:

  • Значение этой переменной в среде.
  • Значение этой переменной в файле .env.
  • Значение по умолчанию, если указано.
  • Пустая строка.

Связанные проекты

Благодарности

В настоящее время этот проект поддерживают Саураб Кумар и Бертран Бонфуа-Клоде, и без поддержки этих замечательных людей он был бы невозможен.

Все заметные изменения в этом проекте будут задокументированы в этом файле.

Формат основан на журнале изменений, и этот проект придерживается семантического управления версиями.

[0.20.0] - 24 марта 2022 г.

Добавлено

Исправлено

0.19.2 — 11.11.2021

Исправлено

Добавлено

0.19.0 – 24 июля 2021 г.

Изменено

Добавлено

0.18.0 — 20 июня 2021 г.

Изменено

0,17.1 - 29 апреля 2021 г.

Исправлено

0.17.0 – 02 04 2021

Изменено

Добавлено

0.16.0 — 27 марта 2021 г.

Изменено

0.15.0 – 28 октября 2020 г.

Добавлено

Изменено

Исправлено

0.14.0 — 03.07.2020

Изменено

Исправлено

0.13.0 — 16 апреля 2020 г.

Добавлено

0.12.0 — 28 февраля 2020 г.

Изменено

Исправлено

0.11.0 — 07 февраля 2020 г.

Добавлено

Изменено

Исправлено

0.10.5 - 19 января 2020 г.

Исправлено

0.10.4 — 17 января 2020 г.

Добавлено

  • Добавить параметр --version в cli (@venthur)
  • Включить загрузку из текущего каталога (@cjauvin)
  • Добавить команду dotenv run для вызова произвольного сценария оболочки с .env (@venthur)
  • Добавить тесты для документов (@Flimm)
  • Сделать поддержку cli необязательной. Используйте pip install python-dotenv[cli] . (@theskumar)
  • Исправить команду dotenv list (@ticosax)
  • Добавить поддержку iPython (@tillahoffmann)
  • Отказ от поддержки Python 2.6.
  • Обрабатывать экранированные символы и символы новой строки в значениях в кавычках. (Спасибо @iameugenejo)
  • Удалите все пробелы вокруг ключа/значения без кавычек. (Спасибо, @paulochf)
  • Добавлено расширение переменных POSIX. (Спасибо @hugochinchilla)
  • Исправлено find_dotenv - теперь он запускает поиск из файла, из которого вызывается эта функция.
  • Добавьте метод find_dotenv, который попытается найти файл .env. (Спасибо @isms)
  • cli: добавлен параметр -q/--quote для управления поведением кавычек вокруг значений в .env . (Спасибо, @hugochinchilla).
  • Улучшенное тестовое покрытие.

Детали проекта

Ссылки на проекты

Статистика

Просмотрите статистику по этому проекту через Libraries.io или с помощью нашего общедоступного набора данных в Google BigQuery

Лицензия: лицензия BSD (пункт BSD-3)

Теги переменные среды, развертывания, настройки, env, dotenv, конфигурации, python

Во многих руководствах по развертыванию предлагается хранить информацию о конфигурации, которая может различаться на разных платформах, в переменных среды. См., например, Приложение 12-фактора. Хотя этот совет не идеально подходит для среды «платформа как услуга», такой как PythonAnywhere, его можно заставить работать. Вот как.

Мы будем использовать пример установки параметра Django SECRET_KEY, так как он распространен.

Короче говоря, вам нужно установить переменную среды в двух разных местах:

  • В сценарии постактивации для работы в консолях Bash
  • В вашем файле WSGI, чтобы он работал в самом веб-приложении.

Во избежание дублирования мы рекомендуем использовать файл .env и инструмент под названием python-dotenv для его загрузки.

Начните с сохранения переменных среды в файл .env в папке проекта¶

Вы можете запустить что-то подобное в консоли Bash или отредактировать файл .env напрямую, используя нашу вкладку "Файлы":

Установите python-dotenv в вашу виртуальную среду¶

Убедитесь, что у вас установлена ​​версия пакета python-dotenv не ниже 0.8, так как более старые версии не могут обрабатывать экспорт в начале строк в файле .env.

Для вашего веб-приложения: загрузите файл .env в свой файл WSGI

Это обеспечит доступность переменных среды для рабочих процессов, которые фактически обслуживают ваше веб-приложение в Интернете.

Перейдите на вкладку Интернет для своего веб-приложения и щелкните ссылку на файл WSGI. Здесь вы можете установить переменную среды, используя код Python; это нужно сделать перед кодом, который фактически загружает ваш веб-сайт (то есть перед вызовом get_wsgi_application ).

Сохраните это изменение, и ваш код теперь будет иметь доступ к переменной из os.getenv , поэтому с настройкой Django SECRET_KEY вы можете просто добавить это в свой settings.py :

Нажмите "Сохранить", перезагрузите веб-приложение, и теперь у него должен быть доступ к переменной.

Для консолей Bash: загрузите файл .env в скрипт postactivate virtualenv¶

Для случаев, когда вы выполняете миграцию базы данных или выполняете любое другое взаимодействие с веб-приложением из командной строки

Вот как загрузить переменные среды из файла .env в консоль Bash:

Предполагая, что вы используете Virtualenv для своего веб-приложения, а также предполагаете, что вы используете virtualenvwrapper/workon, удобным местом для установки переменной среды, которая будет доступна в ваших сеансах консоли Bash, является специальный скрипт под названием «postactivate " который запускается автоматически всякий раз, когда вы активируете виртуальную среду.

  • Обычным расположением может быть /home/yourusername/.virtualenvs/my-project-virtualenv/bin/postactivate

Вот как вы можете добавить указанную выше исходную команду в свой скрипт постактивации:

Проверьте это, активировав виртуальную среду, например, с помощью workon my-project-virtualenv, а затем попытайтесь запустить, например, echo $SECRET_KEY

Все готово!¶

Теперь ваши переменные среды должны загружаться автоматически как в вашем веб-приложении, так и в вашей виртуальной среде.

Хотите улучшить эту страницу? Отправьте запрос на включение!

Авторское право © 2011-2021 PythonAnywhere LLP — Условия — Конфиденциальность и файлы cookie
«Python» — зарегистрированный товарный знак Python Software Foundation.

Читайте также: