Self portability 2

Continuing from my previous post on code portability…

Environment Variables

Using environment variables is a great way to make code portable:

import os

# Instead of hardcoding paths:
db_path = os.environ.get('DATABASE_PATH', '/tmp/db.sqlite')
api_key = os.environ.get('API_KEY')

# With validation:
debug = os.environ.get('DEBUG', 'false').lower() == 'true'

Configuration Files

Separate configuration from code:

import json
import os

config_path = os.path.join(os.path.dirname(__file__), 'config.json')
with open(config_path) as f:
    config = json.load(f)

This approach allows different configurations for different environments without changing code.