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

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


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

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

BASH
# تثبيت package
pip install requests

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

# إزالة package
pip uninstall requests

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

# عرض معلومات package
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 (الصعوبة ⭐⭐)

TEXT 📖 للعرض فقط
# ثبّت أولاً: 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

(1) سير العمل

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 (الصعوبة ⭐⭐)

TEXT 📖 للعرض فقط
# ثبّت أولاً: 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())                # ملخص إحصائي

▶ مثال: سير العمل الكامل للبيئة الافتراضية (الصعوبة ⭐)

TEXT 📖 للعرض فقط
# 1. Create project directory
mkdir my_data_project
cd my_data_project

# 2. Create virtual environment
python -m venv venv

# 3. Activate virtual environment (Windows)
venv\Scripts\activate
# Activate virtual environment (macOS/Linux)
# source venv/bin/activate

# 4. Install project dependencies
pip install requests pandas

# 5. Verify installation
pip list
# Output:
# Package    Version
# ---------- -------
# pandas     2.x.x
# requests   2.x.x

# 6. Freeze dependencies to file
pip freeze > requirements.txt

# 7. View requirements.txt contents
type requirements.txt
# Output:
# pandas==2.x.x
# requests==2.x.x

# 8. Deactivate virtual environment
deactivate

# 9. Someone else rebuilds the environment
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
💡 الخطوات الأساسية: أنشئ ← فعّل ← ثبّت ← جمّد ← ألغِ التفعيل. pip freeze > requirements.txt يكتب إصدارات حزم البيئة الحالية إلى ملف؛ يستخدم الآخرون pip install -r requirements.txt لإعادة إنتاج نفس البيئة بالضبط.



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



❓ أسئلة شائعة

س ما الفرق بين 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، الذي يمسح فقط الحزم المستوردة فعلياً في كودك.

📖 ملخص


📝 تمارين

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

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

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

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%