0Pricing
AI Agents · Урок

Файлы .env и python-dotenv

Загрузка файлов .env, правила .gitignore и рекомендации по использованию dotenv.

«Файлы .env и python-dotenv» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Проблема с экспортом переменных в оболочке

Установка переменных окружения с помощью export в оболочке работает, но требует заново устанавливать их в каждом новом сеансе терминала. Управлять таким образом множеством переменных сложно, и этот способ нельзя удобно передать коллегам.

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

Формат файла .env

Файл .env содержит пары KEY=VALUE, по одной в каждой строке. Строки, начинающиеся с #, являются комментариями. Значения можно заключать в кавычки, но это необязательно. Этот простой формат поддерживают десятки инструментов и фреймворков.

# .env file (NEVER commit this file to git)

# Required API keys
OPENAI_API_KEY=sk-proj-your-real-key-here
SEARCH_API_KEY=tvly-your-tavily-key-here

# Optional settings with defaults
AGENT_MODEL=gpt-4o-mini
AGENT_MAX_STEPS=20
LOG_LEVEL=DEBUG

# Database (optional — disables memory storage if not set)
# DATABASE_URL=postgresql://user:pass@localhost/agentdb

# Environment identifier
ENV=development

Загрузка .env с помощью python-dotenv

Установите python-dotenv с помощью команды pip install python-dotenv. Вызовите load_dotenv() в самом начале точки входа, до любого чтения через os.environ. Эта функция загружает файл .env и заполняет окружение.

# pip install python-dotenv
from dotenv import load_dotenv
import os

# Load .env file — call this BEFORE reading any env vars
load_dotenv()

# Now all variables from .env are available via os.environ
openai_key = os.environ['OPENAI_API_KEY']
model = os.getenv('AGENT_MODEL', 'gpt-4o-mini')
max_steps = int(os.getenv('AGENT_MAX_STEPS', '20'))

print(f'Model: {model}, Max steps: {max_steps}')

Параметры load_dotenv()

У load_dotenv() есть несколько полезных параметров: dotenv_path= позволяет указать пользовательский путь, override=True — перезаписать существующие переменные окружения (по умолчанию они пропускаются), а verbose=True — записать в журнал имя загруженного файла.

from dotenv import load_dotenv
import os

# Load from a specific path
load_dotenv(dotenv_path='/path/to/custom/.env')

# Override existing environment variables
# (by default, existing vars are NOT overridden)
load_dotenv(override=True)

# Load a specific environment file
env_file = os.getenv('ENV_FILE', '.env')
load_dotenv(dotenv_path=env_file, verbose=True)

# Find .env automatically (searches up the directory tree)
from dotenv import find_dotenv
load_dotenv(find_dotenv())

dotenv_values() для явных словарей конфигурации

dotenv_values() возвращает содержимое файла .env в виде словаря Python, не изменяя окружение. Это удобно, когда нужно просмотреть или использовать конфигурацию, не засоряя окружение процесса.

from dotenv import dotenv_values

# Read .env into a dict without touching os.environ
config = dotenv_values('.env')

print(config.get('AGENT_MODEL'))   # 'gpt-4o-mini'
print(config.get('LOG_LEVEL'))     # 'DEBUG'

# Merge .env with actual environment (env vars take priority)
import os
combined = {**dotenv_values('.env'), **os.environ}

# This means actual environment variables override .env values
# Useful for CI where env vars are injected by the pipeline

Файл .env.example

Создайте файл .env.example, в котором перечислены все обязательные переменные с условными значениями. Этот файл IS добавляется в git — он служит документацией для коллег и новых разработчиков, показывая, что нужно настроить.

# .env.example — commit this file to git
# Copy to .env and fill in real values:
# cp .env.example .env

# Required API keys (get from respective providers)
OPENAI_API_KEY=sk-proj-your-openai-key-here
SEARCH_API_KEY=tvly-your-tavily-key-here

# Optional settings
AGENT_MODEL=gpt-4o-mini
AGENT_MAX_STEPS=20
LOG_LEVEL=INFO
ENV=development

# Database (optional)
# DATABASE_URL=postgresql://user:password@localhost:5432/agentdb

Добавление .env в .gitignore

Файл .env NEVER следует добавлять в git. Добавьте его в .gitignore сразу после создания проекта. Убедитесь, что файл игнорируется, до первого коммита.

# .gitignore — add these lines

# Environment files with real secrets
.env
.env.local
.env.production
.env.staging

# But DO commit these:
# .env.example  (placeholder values, safe to share)

# Verify .env is ignored before committing:
# git check-ignore -v .env
# .gitignore:1:.env   .env    <-- means it IS ignored (good)

# If .env was already tracked:
# git rm --cached .env
# git commit -m 'Remove .env from tracking'
# echo '.env' >> .gitignore

Предкоммитный хук для блокировки коммитов с .env

Добавьте хук перед коммитом, который блокирует любой коммит, содержащий файл .env. Это обеспечивает автоматическую защиту на случай, если кто-то забудет проверить .gitignore.

# .git/hooks/pre-commit (make executable: chmod +x .git/hooks/pre-commit)

#!/bin/sh
# Block commits that include .env files with real content
if git diff --cached --name-only | grep -qE '^\.env$';
then
  echo 'ERROR: .env file is staged for commit!'
  echo 'This file contains secrets and must NOT be committed.'
  echo 'Run: git reset HEAD .env'
  exit 1
fi

# Also check for common secret patterns in any staged file
if git diff --cached | grep -qE '(sk-proj-|tvly-|xai-)';
then
  echo 'WARNING: Possible API key detected in staged changes!'
  echo 'Review carefully before committing.'
fi

exit 0

Загрузка .env в разных фреймворках

Многие фреймворки загружают файлы .env автоматически. FastAPI (через pydantic-settings), Django (через django-environ) и Docker Compose изначально поддерживают .env. Знание этих способов помогает избежать повторной загрузки.

# FastAPI with pydantic-settings (auto-loads .env):
# pip install pydantic-settings
from pydantic_settings import BaseSettings

class Settings(BaseSettings):
    openai_api_key: str
    agent_model: str = 'gpt-4o-mini'
    log_level: str = 'INFO'

    class Config:
        env_file = '.env'

# settings = Settings()  # auto-reads .env and validates types
# print(settings.agent_model)  # 'gpt-4o-mini'

# FastAPI is also fine with plain load_dotenv() at the top of main.py
# No need to use pydantic-settings for simple agents

Несколько файлов .env для разных окружений

Используйте отдельные файлы .env для разных окружений: .env.development, .env.staging, .env.production. Загружайте нужный файл на основе переменной ENV.

import os
from dotenv import load_dotenv

# Determine which environment to load
env = os.getenv('ENV', 'development')

# Try environment-specific file first, fall back to base .env
env_file = f'.env.{env}'
if os.path.exists(env_file):
    load_dotenv(env_file)
    print(f'Loaded {env_file}')
else:
    load_dotenv('.env')
    print('Loaded .env')

# Usage:
# ENV=staging python agent.py     -> loads .env.staging
# ENV=production python agent.py  -> loads .env.production
# python agent.py                 -> loads .env (default development)

Полный список проверки настройки

Полный список действий по настройке .env для нового проекта агента:

  1. Создайте .env с настоящими ключами (никогда не добавляйте его в коммит)
  2. Создайте .env.example с условными значениями (этот файл добавляйте в коммит)
  3. Добавьте .env в .gitignore
  4. Добавьте load_dotenv() в начало точки входа
  5. Проверяйте обязательные переменные при запуске
  6. Добавьте cp .env.example .env в инструкции по настройке в README

Проверка знаний: файлы .env и python-dotenv

Проверьте, насколько хорошо Вы понимаете файлы .env и библиотеку python-dotenv.

Итоги: файлы .env и python-dotenv

Теперь у Вас есть полный рабочий процесс с .env для проектов агентов:

  • Создавайте файл .env с настоящими значениями — никогда не добавляйте его в коммит
  • Создавайте .env.example с условными значениями — всегда добавляйте его в коммит
  • Добавляйте .env* (кроме .env.example) в .gitignore
  • Вызывайте load_dotenv() в самом начале точки входа
  • Используйте dotenv_values() для доступа к словарю без обращения к os.environ
  • Используйте отдельные файлы для каждого окружения (.env.staging, .env.production)

Этот рабочий процесс не допускает попадания секретов в Git и упрощает локальную разработку.

Часто задаваемые вопросы

Урок «Файлы .env и python-dotenv» бесплатный?

Да — полный текст урока «Файлы .env и python-dotenv» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Файлы .env и python-dotenv»?

Загрузка файлов .env, правила .gitignore и рекомендации по использованию dotenv. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

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

Сколько времени занимает урок «Файлы .env и python-dotenv»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Переменные окружения для агентов
  2. Файлы .env и python-dotenv
  3. Ротация секретов и безопасность
  4. Профили конфигурации для разработки и продакшена
← Назад к AI Agents