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 يوثّق جميع المتغيرات المطلوبة باستخدام قيم نائبة. يجب حفظ هذا الملف في 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 في 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. متغيرات البيئة للوكلاء
  2. ملفات .env وpython-dotenv
  3. تدوير الأسرار وأمنها
  4. ملفات تعريف الإعدادات للتطوير والإنتاج
← العودة إلى AI Agents