pip والبيئات الافتراضية

المكتبة القياسية تغطي العديد من السيناريوهات، لكن المشاريع الحقيقية تستخدم دائماً تقريباً مكتبات الطرف الثالث — requests لـ HTTP، pandas للبيانات، flask لتطبيقات الويب. هذا الدرس يعلمك كيفية تثبيت وإدارة هذه المكتبات، وكيفية استخدام البيئات الافتراضية لعزل التبعيات عبر المشاريع.


1. pip — مدير حزم بايثون

pip هو مدير الحزم الرسمي لبايثون، لتثبيت وإزالة وإدارة مكتبات الطرف الثالث.

BASH
# تثبيت حزمة
pip install requests

# تثبيت إصدار محدد
pip install requests==2.31.0

# إزالة حزمة
pip uninstall requests

# عرض الحزم المثبتة
pip list

# عرض معلومات الحزمة
pip show requests
💡 pip يُنزّل الحزم من PyPI (Python Package Index). PyPI هو مستودع الحزم الرسمي لبايثون، يستضيف أكثر من 500,000 حزمة. pip install package_name يُنزّل ويُثبّت تلقائياً من PyPI.


2. requirements.txt

عندما يعتمد مشروعك على مكتبات طرف ثالث متعددة، استخدم requirements.txt لتسجيلها:

TXT
requests==2.31.0
flask==3.0.0
pandas==2.0.0
numpy==1.24.0
BASH
# تثبيت جميع التبعيات (شغّل بعد استنساخ مشروع)
pip install -r requirements.txt

# إنشاء requirements.txt (جميع الحزم في البيئة الحالية)
pip freeze > requirements.txt

مثال: استدعاء API باستخدام requests (الصعوبة ⭐⭐)

PYTHON
# ثبّت أولاً: pip install requests
import requests

# استدعاء واجهة طقس عامة
try:
    response = requests.get(
        "https://api.open-meteo.com/v1/forecast",
        params={
            "latitude": 39.9,
            "longitude": 116.4,
            "current_weather": True
        },
        timeout=10
    )
    
    if response.status_code == 200:
        data = response.json()
        weather = data["current_weather"]
        print(f"Beijing current temperature: {weather['temperature']}°C")
        print(f"Wind speed: {weather['windspeed']} km/h")
    else:
        print(f"Request failed: {response.status_code}")

except requests.exceptions.RequestException as e:
    print(f"Network error: {e}")
▶ جرّب الكود

3. البيئات الافتراضية (venv)

المشاريع المختلفة قد تحتاج إصدارات مختلفة من نفس الحزمة. البيئات الافتراضية تحل هذا — كل مشروع له بيئته المعزولة الخاصة.

BASH
# إنشاء بيئة افتراضية
python -m venv myenv

# تفعيل البيئة الافتراضية
# ويندوز:
myenv\Scripts\activate
# macOS/لينكس:
source myenv/bin/activate

# بعد التفعيل، يظهر (myenv) في بداية الموجه
# الحزم المثبتة الآن تؤثر فقط على هذه البيئة

# إلغاء تفعيل البيئة الافتراضية
deactivate

سير العمل

BASH
# 1. أنشئ دليل المشروع
mkdir my_project
cd my_project

# 2. أنشئ بيئة افتراضية
python -m venv venv

# 3. فعّل
# ويندوز:
venv\Scripts\activate
# macOS/لينكس:
source venv/bin/activate

# 4. ثبّت التبعيات
pip install requests flask

# 5. سجل التبعيات
pip freeze > requirements.txt

# 6. ألغِ التفعيل عند الانتهاء
deactivate

# شخص آخر يستنسخ المشروع:
# python -m venv venv
# source venv/bin/activate (أو ما يعادله في ويندوز)
# pip install -r requirements.txt

4. مرجع سريع لمكتبات الطرف الثالث الشائعة

المكتبة الغرض أمر التثبيت سطر واحد
requests طلبات HTTP pip install requests أشهر طريقة لطلبات HTTP
flask إطار ويب pip install flask إطار ويب بايثون خفيف الوزن
pandas تحليل بيانات pip install pandas معالجة بيانات بمستوى Excel
numpy حساب عددي pip install numpy عمليات مصفوفات عالية الأداء
beautifulsoup4 استخراج بيانات ويب pip install beautifulsoup4 استخراج بيانات من HTML
pillow معالجة صور pip install pillow فتح وتحرير وحفظ الصور
pytest إطار اختبار pip install pytest أشهر إطار اختبار بايثون

مثال: قراءة CSV باستخدام pandas (الصعوبة ⭐⭐)

PYTHON
# ثبّت أولاً: pip install pandas
import pandas as pd

# اقرأ ملف CSV
df = pd.read_csv("students.csv")
print(df.head())                    # أول 5 صفوف
print(f"Rows: {len(df)}, Columns: {len(df.columns)}")
print(df.describe())                # ملخص إحصائي
▶ جرّب الكود

حالات الاستخدام الشائعة


❓ أسئلة شائعة

س ما الفرق بين pip install و python -m pip install؟
ج ينتجان نفس النتيجة. python -m pip يُحدد صراحة أي مفسر بايثون يستخدم pip، وهو أكثر أماناً في بيئات متعددة إصدارات بايثون. اعتد على استخدام python -m pip install. س:هل يجب أن تكون البيئة الافتراضية داخل أو خارج دليل المشروع؟ ج:عادة داخل جذر المشروع، باسم venv أو .venv. هذا يجعله واضحاً للمطورين الآخرين. تذكر إضافة venv/ إلى .gitignore — البيئات الافتراضية لا ينبغي أن تُرفع إلى نظام التحكم في الإصدارات. س:pip freeze > requirements.txt يسرد جميع الحزم، بما في ذلك تبعيات التبعيات. أليس هذا كثيراً جداً؟ ج:pip freeze يسرد كل شيء. من الشائع الاحتفاظ فقط بالحزم عالية المستوى وإزالة التبعيات غير المباشرة. بدلاً من ذلك، استخدم pipreqs، الذي يمسح فقط الحزم المستوردة فعلياً في كودك.

📖 ملخص

  • pip install package_name يُثبّت حزم الطرف الثالث؛ pip uninstall يزيلها
  • requirements.txt يسجل تبعيات المشروع؛ pip install -r requirements.txt يُثبّتها جميعاً
  • البيئات الافتراضية (venv) تعزل التبعيات لكل مشروع
  • سير العمل: أنشئ venv ← فعّل ← pip install ← طوّر ← جمّد ← التزم
  • مكتبات الطرف الثالث الشائعة: requests, flask, pandas, numpy, beautifulsoup4

📝 تمارين

  1. أساسي (الصعوبة ⭐): أنشئ بيئة افتراضية، فعّلها، ثبّت مكتبة requests، تأكد بـ pip list، ثم ألغِ التفعيل.

  2. متوسط (الصعوبة ⭐⭐): استخدم مكتبة requests لاستدعاء https://api.github.com/repos/python/cpython واحصل على معلومات عن مستودع CPython. أخرج اسم المستودع، عدد النجوم، عدد الشوكات، وآخر وقت تحديث.

  3. تحدي (الصعوبة ⭐⭐⭐): أنشئ دليل مشروع، هيئ بيئة افتراضية، ثبّت flask و requests، أنشئ requirements.txt باستخدام pip freeze. ثم احذف البيئة الافتراضية وأعد بنائها من الصفر باستخدام requirements.txt — تحقق من أنها تعمل.

100%