В приложениях часто используются различные ключи авторизации, логины и пароли для доступа к различным сервисам и базам данных. Чтобы не хардкодить конфиденциальные данные, существует ряд возможностей.
Файл .env
Работает в составе библиотеки python-dotenv (pip install python-dotenv).
Этот файл создается в корневой или другой нужной директории. Обязательно сразу добавляется в .gitignore, чтобы данные не оказались в репозитории на GitHub.
# .gitignore
.env
Переменные в файле хранятся в формате:
OPEN_API_KEY='your_open_api_key'
DB_PASS='db_pass'
DB_LOGIN='db_login'
Таким образом, конфиденциальные данные остаются только в среде разработки на локальной машине.
Пример использования
from dotenv import load_dotenv
import os
# Загрузка переменных окружения из файла .env в переменные окружения операционной системы
load_dotenv()
# Получение ключа API из переменных окружения
openai_key = os.getenv('OPEN_API_KEY')
print(openai_key)
Если файл .env лежит в директории выше текущей
import os
from pathlib import Path
from dotenv import load_dotenv
# 1. Находим путь к текущему скрипту
current_dir = Path(__file__).resolve().parent
# 2. Поднимаемся на уровень выше и ищем .env
dotenv_path = current_dir.parent / '.env'
# 3. Загружаем переменные из этого конкретного файла
load_dotenv(dotenv_path=dotenv_path)
# 4. Теперь os.getenv сработает
api_key = os.getenv("MISTRAL_API_KEY")
Применение в ML
При работе с OpenAI через LangChain или напрямую через библиотеку OpenAI, ожидается, что ключ авторизации (токен) находится в переменных окружения. При вызове API этот ключ автоматически считывается из переменной окружения.
Аналогичным образом работают и другие библиотеки, требующие ключ авторизации.