-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path09_env_variables.py
More file actions
61 lines (47 loc) · 1.69 KB
/
Copy path09_env_variables.py
File metadata and controls
61 lines (47 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
"""
Module 09: Environment Variables and dotenv
Learn: os.getenv(), .env files, python-dotenv
In the advanced courses, EVERY project starts with:
from dotenv import load_dotenv
load_dotenv()
DEFAULT_MODEL = os.getenv("DEFAULT_MODEL", "gpt-4o-mini")
"""
import os
# --- os.getenv() — read environment variables ---
# Returns None if not set, or a default value
home = os.getenv("HOME")
print(f"Home directory: {home}")
# With a default (the pattern used in all courses)
model = os.getenv("DEFAULT_MODEL", "gemini/gemini-2.0-flash")
print(f"Model: {model}")
db_path = os.getenv("DB_PATH", "ecommerce.db")
print(f"Database: {db_path}")
# --- Why .env files? ---
# You don't want API keys in your code!
# Bad: OPENAI_API_KEY = "sk-abc123..."
# Good: OPENAI_API_KEY is in .env file, loaded at runtime
# --- python-dotenv ---
# Create a sample .env file to demonstrate
from pathlib import Path
env_content = """# Sample .env file
DEFAULT_MODEL=gemini/gemini-2.0-flash
EMBEDDING_MODEL=google/text-embedding-004
APP_NAME=Green Bites AI
"""
Path(".env.demo").write_text(env_content)
# Load it (in real projects, this is just .env)
from dotenv import load_dotenv
load_dotenv(".env.demo")
# Now these are available via os.getenv
app_name = os.getenv("APP_NAME", "Unknown")
embedding = os.getenv("EMBEDDING_MODEL", "default")
print(f"\nLoaded from .env.demo:")
print(f" APP_NAME: {app_name}")
print(f" EMBEDDING_MODEL: {embedding}")
# --- os.environ (the full dictionary) ---
# You can also access all env vars as a dict
# print(dict(os.environ)) # Warning: prints everything!
# Cleanup
if os.path.exists(".env.demo"):
os.remove(".env.demo")
# 🎯 Exercise: Create a .env file with YOUR_NAME=... and load it