جاري تحميل المحتوى...
تعلمت في الفصل السابق أن Python توفر Standard Library تحتوي Modules جاهزة مثل math، كما تعلمت إنشاء Local Modules داخل المشروع. أحيانًا نحتاج أدوات إضافية لا تكون جزءًا من Standard Library. في هذا الفصل ستتعلم بصورة عملية كيف تدير Packages باستخدام pip، وكيف تنشئ Virtual Environment باستخدام venv حتى تبقى Dependencies الخاصة بكل مشروع منظمة ومعزولة.
مع نمو المشروع قد نحتاج إلى كود جاهز يوفر وظائف إضافية بدل كتابة كل شيء من البداية. يمكن توزيع كثير من هذا الكود في صورة Packages يمكن تثبيتها واستخدامها في بيئة Python عند الحاجة.
لكن استخدام Packages خارجية يطرح سؤالًا مهمًا: كيف نعرف ما الذي يحتاجه كل مشروع؟ وكيف نتجنب خلط Packages مشروع مع مشروع آخر؟ هنا تظهر أهمية pip وVirtual Environments.
تعلمت سابقًا أن Module يمكن أن يكون ملف Python واحدًا مثل helpers.py.
| المفهوم | الوصف المبسط |
|---|---|
Module |
يمكن أن يكون ملف Python واحدًا يحتوي كودًا يمكن استخدامه من ملفات أخرى. |
Package |
تنظيم يمكن أن يجمع Modules مرتبطة ويمكن توزيعه أو تثبيته للاستخدام. |
يكفي في هذا الفصل فهم الفرق المفاهيمي. لن ندرس البنية الداخلية لإنشاء Packages أو ملفات إعدادها.
Module مثل math تأتي ضمن Python Standard Library، لذلك نستخدمها دون تثبيت Package خارجية.
import math
أما Third-party Package فهي حزمة خارجية عن Standard Library ونثبتها عند الحاجة.
سنستخدم اسم requests كمثال على أمر تثبيت Package فقط، ولن ندرس طريقة استخدامها أو API الخاصة بها في هذا الفصل.
pip؟pip أداة تستخدم لإدارة Python Packages. من الاستخدامات الأساسية التي نحتاجها هنا:
لن ندخل في طريقة عمل pip الداخلية أو آلية حل Dependencies.
pipيمكن استخدام الأمر التالي للتحقق من pip المرتبطة بـPython الذي نشغله:
python -m pip --version
قد يتضمن الناتج رقم Version ومسارًا، وهذه التفاصيل تختلف بين الأجهزة والبيئات. المهم هنا هو فهم وظيفة الأمر، وليس حفظ ناتج معين.
إذا لم يعمل pip في تثبيت Python المستخدم، فقد تختلف طريقة تثبيته أو إصلاحه حسب طريقة تثبيت Python. هذه الحالات ليست موضوع هذا الفصل.
python -m pip؟قد ترى أوامر تبدأ مباشرة بـpip، لكن أمثلة هذا الفصل تستخدم غالبًا:
python -m pip
الفكرة المبسطة أن هذه الصيغة تشغل pip من خلال Python الذي نستدعيه، مما يساعد على ربط أمر إدارة Packages بالـInterpreter المستخدم.
لن ندخل في تفاصيل PATH أو Python Launchers المختلفة.
الصيغة الأساسية:
python -m pip install package-name
ومثال باستخدام Package حقيقية فقط لتوضيح الأمر:
python -m pip install requests
هذا المثال يوضح التثبيت فقط. لا نحتاج إلى معرفة كيفية استخدام requests داخل كود Python.
لإزالة Package مثبتة من البيئة المستخدمة يمكن استخدام:
python -m pip uninstall package-name
هذا الأمر يختلف عن deactivate. الأول يتعلق بإزالة Package، أما deactivate فيتعلق بالخروج من Virtual Environment المفعلة.
يمكن عرض Packages الموجودة في البيئة المستخدمة بواسطة:
python -m pip list
لا توجد قائمة ثابتة يجب حفظها؛ فهي تختلف حسب البيئة وما تم تثبيته فيها.
Virtual Environment هي بيئة Python معزولة تساعد على إبقاء Packages الخاصة بمشروع منفصلة عن Packages مشاريع أخرى.
مثلًا يمكن أن يكون لدينا:
يمكن لكل مشروع تثبيت Dependencies المناسبة له دون الاعتماد على أن تكون جميع المشاريع متطابقة.
مهم: Virtual Environment ليست Virtual Machine. هي طريقة لتنظيم وعزل بيئة Python وPackages الخاصة بالمشروع، وليست جهازًا افتراضيًا كاملًا.
venv؟يوفر Python Module باسم venv لإنشاء Virtual Environments.
الفوائد الأساسية:
.venvمن داخل مجلد المشروع يمكن استخدام:
python -m venv .venv
في هذا الأمر:
python هو Python المستخدم لتشغيل الأمر.-m venv يشغل Module venv..venv هو اسم مجلد Environment في هذا المثال.يمكن اختيار اسم آخر، لكن .venv اسم شائع وواضح للمشاريع.
إنشاء .venv لا يعني أن Environment أصبحت مفعلة في Terminal الحالية. الإنشاء والتفعيل خطوتان مختلفتان.
يختلف أمر التفعيل حسب نوع Terminal.
.venv\Scripts\Activate.ps1
.venv\Scripts\activate.bat
استخدم الأمر المناسب للTerminal الذي تعمل عليه.
قد توجد إعدادات خاصة بالنظام أو Shell تؤثر في تشغيل Scripts، لكن Troubleshooting لهذه الإعدادات خارج نطاق الفصل.
في Shells الشائعة على macOS/Linux يكون التفعيل غالبًا:
source .venv/bin/activate
نبقي Windows المثال الرئيسي في الفصل، وهذه الملاحظة فقط لتوضيح أن أمر التفعيل يختلف حسب النظام وShell.
قد تعرض Terminal اسم Environment مثل (.venv) في بداية السطر بعد التفعيل.
لكن شكل Prompt ليس قاعدة ثابتة؛ فقد يختلف حسب Shell والإعدادات. الأهم هو فهم أي Python Interpreter وأي Environment تستخدمها Commands الحالية.
Workflow المبتدئ الذي سنستخدمه هو:
python -m pip لتثبيت Packages المطلوبة.بعد التفعيل يمكن مثلًا تشغيل:
python -m pip install package-name
في سياق الفصل، نستخدم Python الخاص بالEnvironment المفعلة حتى تثبت Package في بيئة المشروع المستخدمة.
إذا كنت تستخدم IDE مثل VS Code، فمن المهم أن يستخدم المشروع Python Interpreter الخاص بالEnvironment التي أنشأتها.
إذا كانت Environment داخل .venv، فالفكرة هي اختيار Interpreter الموجود داخل هذه Environment للمشروع.
لا نحتاج إلى حفظ أسماء أزرار أو خطوات واجهة محددة؛ فقد تتغير الواجهة. المفهوم المهم هو أن Terminal والمحرر يجب أن يعملا باستخدام Interpreter المناسب للمشروع.
deactivateعندما تكون Virtual Environment مفعلة، يمكن الخروج منها في الاستخدام الأساسي بواسطة:
deactivate
deactivate توقف تفعيل Environment الحالية في Shell.
هي لا تحذف مجلد .venv ولا تزيل Packages منه.
requirements.txt؟requirements.txt ملف يستخدم بصورة شائعة لتسجيل متطلبات Python الخاصة بالمشروع، مثل أسماء Packages وVersion specifiers عند الحاجة.
الفكرة الأساسية هي أن المشروع يمكن أن يحمل وصفًا للمتطلبات التي يحتاجها بدل الاعتماد على تذكر Packages يدويًا.
لن ندخل في Lock Files أو Dependency Management المتقدم.
pip freezeيعرض الأمر التالي Packages المثبتة بصيغة Requirements:
python -m pip freeze
وفي Workflow مبسط يمكن توجيه الناتج إلى ملف:
python -m pip freeze > requirements.txt
الرمز > هنا جزء من أمر Terminal ويوجه الناتج إلى الملف. لا نحتاج إلى دراسة Shell Redirection بصورة موسعة.
pip freeze يعكس ما هو مثبت في البيئة بصيغة Requirements؛ ولا نقدمه هنا بوصفه نظام Lock متقدمًا.
requirements.txtإذا كان لدينا ملف متطلبات جاهز، يمكن تثبيت ما يسجله باستخدام:
python -m pip install -r requirements.txt
الخيار -r يخبر pip بقراءة المتطلبات من الملف المحدد.
يمكن تلخيص Workflow المشروع للمبتدئ بهذه الخطوات:
ابدأ من Terminal داخل مجلد المشروع الذي تعمل عليه.
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install package-name
تأكد أيضًا أن IDE يستخدم Interpreter الخاص بـ.venv.
python -m pip freeze > requirements.txt
deactivate
الأمر:
python -m venv .venv
ينشئ Environment، لكنه لا يساوي أمر التفعيل في Terminal الحالية.
Virtual Environment تعزل بيئة Python وPackages، ولا تنشئ نظام تشغيل أو جهازًا افتراضيًا كاملًا.
PowerShell تستخدم Activate.ps1 في المثال، بينما Command Prompt تستخدم activate.bat.
قبل تثبيت Dependencies الخاصة بالمشروع، تحقق من أنك تستخدم Python Interpreter والEnvironment المقصودة.
deactivate تحذف Environmentالأمر يخرج من Environment المفعلة فقط، ولا يحذف .venv.
pip list ثابتPackages المثبتة تختلف من Environment إلى أخرى، لذلك لا نحفظ قائمة ثابتة.
pipVersion قد تختلف بين الأجهزة ومع الوقت. المهم معرفة أمر التحقق وليس حفظ الرقم.
pip freeze Lock File متقدمًافي هذا الفصل نستخدمه لإخراج Packages المثبتة بصيغة Requirements وحفظها عند الحاجة، دون الدخول في أنظمة Lock أو Dependency Resolution.
اشرح بكلماتك الفرق بين Module مثل helpers.py وPackage يمكن تثبيتها.
استخدم أمر التحقق من pip دون الاعتماد على رقم Version الناتج.
اكتب أمر تثبيت Package افتراضية باسم example-package باستخدام الصيغة الأساسية المعتمدة في الفصل.
أنشئ Environment باسم .venv وحدد بصورة منفصلة الأمر الذي تستخدمه لتفعيلها على Windows PowerShell.
اشرح لماذا وجود مجلد .venv بعد إنشائه لا يعني وحده أن Environment مفعلة في Terminal.
قارن بين وظيفة python -m pip list ووظيفة python -m pip uninstall package-name.
اشرح وظيفة requirements.txt ثم اكتب الأمر المستخدم لتثبيت المتطلبات المسجلة فيه.
رتب الخطوات الآتية: إنشاء Environment، تفعيلها، تثبيت Package، حفظ المتطلبات، ثم deactivate.
math مثال من Standard Library، بينما Third-party Packages تكون خارجها وتثبت عند الحاجة.pip تستخدم لإدارة Python Packages.python -m pip --version يساعد على التحقق من pip المرتبطة بـPython المستخدم.python -m pip install package-name تثبت Package.python -m pip uninstall package-name تزيل Package من البيئة المستخدمة.python -m pip list تعرض Packages الموجودة في البيئة المستخدمة.python -m venv .venv ينشئ Environment باسم .venv..venv\Scripts\Activate.ps1..venv\Scripts\activate.bat.source .venv/bin/activate.deactivate تخرج من Environment المفعلة ولا تحذفها.requirements.txt يمكن أن يسجل متطلبات المشروع.python -m pip freeze يخرج Packages المثبتة بصيغة Requirements.python -m pip install -r requirements.txt يثبت المتطلبات المسجلة في الملف.في الفصل التالي ستبدأ مقدمة البرمجة الكائنية في Python. سننتقل إلى هذا الموضوع بعد أن أصبحت قادرًا على تنظيم المشروع وبيئته وإدارة Dependencies الأساسية.
نشر في ١١ أغسطس ٢٠٢٦