Pliki .env i python-dotenv
Wczytywanie plików .env, reguły .gitignore i dobre praktyki dotyczące dotenv.
Pliki .env i python-dotenv to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Problem z eksportami powłoki
Ustawianie zmiennych środowiskowych za pomocą export w powłoce działa, ale wymaga ponownego ustawiania ich w każdej nowej sesji terminala. Zarządzanie wieloma zmiennymi w ten sposób jest podatne na błędy i utrudnia współpracę z zespołem.
Pliki .env rozwiązują ten problem, przechowując wszystkie zmienne projektu w jednym pliku, który jest automatycznie wczytywany.
Format pliku .env
Plik .env zawiera pary KEY=VALUE, po jednej w każdym wierszu. Wiersze rozpoczynające się od # są komentarzami. Wartości można opcjonalnie ująć w cudzysłowy. Ten prosty format jest obsługiwany przez dziesiątki narzędzi i frameworków.
# .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=developmentWczytywanie .env za pomocą python-dotenv
Należy zainstalować python-dotenv za pomocą polecenia pip install python-dotenv. Wywołanie load_dotenv() należy umieścić na samym początku punktu wejścia, przed odczytaniem jakichkolwiek wartości z os.environ. Wczytuje ono plik .env i uzupełnia środowisko.
# 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}')Opcje load_dotenv()
load_dotenv() ma kilka przydatnych opcji: dotenv_path= do wskazania własnej ścieżki, override=True do nadpisywania istniejących zmiennych środowiskowych (domyślnie są one pomijane) oraz verbose=True do logowania informacji o wczytanym pliku.
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() do jawnego tworzenia słowników konfiguracji
dotenv_values() zwraca zawartość pliku .env jako słownik języka Python bez modyfikowania środowiska. Jest to przydatne, gdy chcesz sprawdzić konfigurację lub użyć jej bez zanieczyszczania środowiska procesu.
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 pipelinePlik .env.example
Należy utworzyć plik .env.example, który dokumentuje wszystkie wymagane zmienne za pomocą wartości zastępczych. Ten plik należy zatwierdzić w git — służy jako dokumentacja dla współpracowników i nowych programistów, pokazująca, co należy skonfigurować.
# .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/agentdbDodawanie .env do .gitignore
Plik .env NIGDY nie może zostać zatwierdzony w git. Należy dodać go do .gitignore natychmiast po utworzeniu projektu. Przed pierwszym commitem należy sprawdzić, czy plik jest ignorowany.
# .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' >> .gitignoreHook pre-commit blokujący commity zawierające .env
Należy dodać hook pre-commit, który blokuje każdy commit zawierający plik .env. Zapewnia to automatyczną ochronę na wypadek, gdy ktoś zapomni sprawdzić plik .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 0Wczytywanie .env w różnych frameworkach
Wiele frameworków automatycznie wczytuje pliki .env. FastAPI (za pośrednictwem pydantic-settings), Django (za pośrednictwem django-environ) i Docker Compose natywnie obsługują pliki .env. Znajomość tych mechanizmów pozwala uniknąć wielokrotnego wczytywania.
# 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 agentsWiele plików .env dla różnych środowisk
Należy używać osobnych plików .env dla różnych środowisk: .env.development, .env.staging, .env.production. Należy wczytywać właściwy plik na podstawie zmiennej 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)Pełna lista kontrolna konfiguracji
Kompletna lista kontrolna konfiguracji .env dla nowego projektu agenta:
- Utwórz
.envz rzeczywistymi kluczami (nigdy go nie zatwierdzaj) - Utwórz
.env.examplez wartościami zastępczymi (ten plik zatwierdź) - Dodaj
.envdo.gitignore - Dodaj
load_dotenv()na początku punktu wejścia - Sprawdzaj wymagane zmienne przy uruchamianiu
- Dodaj
cp .env.example .envdo instrukcji konfiguracji w README
Sprawdzenie wiedzy: pliki .env i python-dotenv
Sprawdź swoją znajomość plików .env i biblioteki python-dotenv.
Podsumowanie: pliki .env i python-dotenv
Masz już kompletny sposób pracy z plikami .env w projektach agentów:
- Utwórz plik
.envz rzeczywistymi wartościami — nigdy go nie zatwierdzaj - Utwórz
.env.examplez wartościami zastępczymi — zawsze go zatwierdzaj - Dodaj
.env*(z wyjątkiem .env.example) do.gitignore - Wywołuj
load_dotenv()na samym początku punktu wejścia - Używaj
dotenv_values()do dostępu w formie słownika bez modyfikowania os.environ - Używaj osobnych plików dla każdego środowiska (
.env.staging,.env.production)
Ten sposób pracy chroni sekrety przed trafieniem do systemu Git, a jednocześnie ułatwia programowanie lokalne.
Często zadawane pytania
Czy lekcja „Pliki .env i python-dotenv” jest bezpłatna?
Tak — pełny tekst „Pliki .env i python-dotenv” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Pliki .env i python-dotenv”?
Wczytywanie plików .env, reguły .gitignore i dobre praktyki dotyczące dotenv. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Pliki .env i python-dotenv”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Zmienne środowiskowe dla agentów
- Pliki .env i python-dotenv
- Rotacja sekretów i bezpieczeństwo
- Profile konfiguracji dla środowisk deweloperskich i produkcyjnych