Menu
العربية

pip في بايثون: تثبيت وإدارة المكتبات من PyPI

تعرّف على كيفية تثبيت وتحديث وحذف مكتبات بايثون باستخدام pip، مع شرح PyPI وملف requirements.txt ولماذا يجب تجنّب التثبيت العام.

ما هو pip في بايثون؟

pip هو الأداة التي تُستخدم في تثبيت مكتبات بايثون التي لم تكتبها بنفسك. عندما تُنفّذ الأمر pip install requests، تذهب الأداة إلى PyPI (أي Python Package Index، مستودع حزم بايثون الرسمي)، تبحث عن مكتبة requests، تُنزّل النسخة المناسبة لنظامك، ثم تضعها داخل مجلد site-packages الخاص بنسخة بايثون عندك. بعد ذلك يصبح الأمر import requests جاهزًا للعمل.

كل تثبيت لبايثون 3 سواء من python.org أو Homebrew أو مدير الحزم في توزيعتك على لينكس يأتي مع pip جاهزًا. قبل أن تُثبّت أي شيء، تأكّد أولًا من وجوده:

python -m pip --version

من المفترض أن يظهر لك رقم الإصدار ومسار وحدة pip. أما إذا فشل الأمر، فالحل الأكثر موثوقية هو:

python -m ensurepip --upgrade

هكذا يتم تثبيت pip داخل نسخة بايثون لديك باستخدام النسخة المرفقة مع المفسّر نفسه.

الفرق بين python -m pip و pip

ستصادف الصيغتين في كل مكان، وهما تؤديان نفس الوظيفة تقريباً، لكن مع فرق جوهري واحد: الأمر python -m pip يستخدم python الموجود في متغير PATH لديك — أي نفس المفسّر الذي يُشغّل السكربتات عندك. أما pip المجرّد فيستخدم أول pip يصادفه النظام، وهذا ليس بالضرورة نفس المفسّر.

عندما يكون لديك أكثر من إصدار بايثون مثبّت (وهو أمر شائع جداً على macOS)، فإن استخدام pip المجرّد هو السبب الرئيسي وراء الموقف المحيّر الذي يقول فيه المطوّر: "لقد ثبّتُ المكتبة، لكن الكود ما زال يعطيني ModuleNotFoundError!"

القاعدة الذهبية: استخدم python -m pip ... عندما تريد أن تضمن تماماً أي مفسّر سيستلم الحزمة. أما pip المجرّد فلا بأس به في المهام السريعة إذا كنت متأكداً من بيئتك.

تثبيت مكتبات بايثون باستخدام pip install

الأمر الأساسي:

python -m pip install requests

يجلب هذا الأمر مكتبة requests من PyPI مع كل المكتبات التي تعتمد عليها ويثبّتها. وخلال دقيقة واحدة تقدر تستخدمها:

main.py
Output
Click Run to see the output here.

تثبيت عدة مكتبات دفعة واحدة:

python -m pip install requests pandas rich

تثبيت إصدار محدد:

python -m pip install "django==5.0.2"
python -m pip install "requests>=2.30,<3"

علامات الاقتباس مهمة في بعض الأصداف (shells)، لأنها تمنع تفسير == و < كمعاملات خاصة بالصدفة.

تحديث المكتبات وحذفها

python -m pip install --upgrade requests
python -m pip uninstall requests

الخيار --upgrade يجلب أحدث إصدار يتوافق مع القيود التي تحددها. أما uninstall فيحذف المكتبة نفسها فقط دون التبعيات؛ هذه تبقى مثبتة إلى أن تحذفها يدويًا.

لتحديث pip ذاته إلى آخر إصدار:

python -m pip install --upgrade pip

يُنصح بتشغيل هذا الأمر مرة كل بضعة أشهر. فالإصدارات الأحدث من pip تلتقط مشاكل التثبيت بشكل أفضل وتتعامل مع الاعتماديات بكفاءة أعلى.

عرض المكتبات المثبتة

python -m pip list
python -m pip show requests

list يعرض كل المكتبات المثبّتة في بيئة بايثون الحالية، أما show requests فيطبع رقم الإصدار والمسار والاعتماديات والترخيص لتلك المكتبة تحديدًا — مفيد جدًا لما تسأل نفسك: "أنا فعلًا أستخدم أي إصدار من هذه المكتبة؟"

ملف requirements.txt: كيف توثّق اعتماديات مشروعك

لما يحتوي المشروع على أكثر من مكتبة أو اثنتين، الأفضل توثّق القائمة في ملف. والأمر pip freeze يقوم بالمهمة نيابةً عنك:

python -m pip freeze > requirements.txt

ستحصل على ملف فيه كل اعتمادية مثبّتة على سطر مستقل:

django==5.0.2
requests==2.31.0
rich==13.7.1

أيّ شخص يستنسخ المستودع الخاص بك يقدر يعيد تثبيت نفس المكتبات عن طريق:

python -m pip install -r requirements.txt

pip freeze يلتقط كل شيء مثبّت لديك، بما في ذلك الاعتماديات غير المباشرة (transitive dependencies). هذا مفيد إذا أردت إعادة إنتاج البيئة بدقة متناهية، لكنه يُنتج ملفًا مزعجًا إذا كنت تريد فقط المكتبات الرئيسية التي يستوردها كودك فعلًا. لهذا السبب، يعتمد كثير من المطوّرين على ملف requirements.txt مكتوب يدويًا يحتوي على الاعتماديات المباشرة فقط، ويتركون لـ pip مهمة حلّ الاعتماديات الفرعية.

في المشاريع الحديثة، بدأ ملف pyproject.toml (مع أدوات مثل pip-tools و uv و poetry و hatch) يحلّ محلّ requirements.txt تدريجيًا. الفكرة واحدة: "دوّن اعتمادياتك في ملف، ثم نفّذ أمرًا واحدًا لتثبيتها"، لكن صيغة الملف أصبحت أكثر تنظيمًا.

ثبّت مكتبات بايثون دائمًا داخل بيئة افتراضية

كل مشروع بايثون جدّي يجب أن تكون له بيئة افتراضية (virtual environment)، وهي ببساطة مجلد خاص بالمشروع يحتوي على نسخته المستقلة من python ومكتباته المثبّتة. بهذه الطريقة، أي pip install في مشروع ما لن يؤثر على أي مشروع آخر عندك.

الإعداد لا يتجاوز سطرين:

python -m venv .venv
source .venv/bin/activate    # macOS / Linux
# or .venv\Scripts\activate on Windows

بمجرد تفعيل البيئة الافتراضية، فإن الأمر python -m pip install requests يُثبّت الحزمة داخل البيئة الافتراضية فقط، ويبقى بايثون النظام نظيفًا. تجد شرحًا أعمق لهذه النقطة في صفحة البيئات الافتراضية.

إذا صادفك يومًا تحذير عند تنفيذ pip install يخبرك بأنك على وشك التثبيت في بايثون النظام (أو رسالة تطلب منك إضافة --break-system-packages)، توقّف فورًا. هذه إشارة واضحة بأنك تحتاج إلى إنشاء بيئة افتراضية بدلاً من ذلك.

متى يفشل pip في تثبيت مكتبات بايثون؟

إليك أشهر أنواع الأخطاء التي قد تواجهك ومعنى كلٍّ منها:

  • Could not find a version that satisfies the requirement … — غالبًا خطأ إملائي في اسم الحزمة، أو أن الحزمة تتطلب إصدار بايثون أحدث مما لديك.
  • error: Microsoft Visual C++ 14.0 or greater is required (على ويندوز) — الحزمة تحتوي على امتداد مكتوب بلغة أصلية ويحتاج إلى أدوات بناء C++. إمّا أن تُثبّت Build Tools من مايكروسوفت، أو تبحث عن wheel جاهز مسبقًا (معظم الحزم الشهيرة توفّره).
  • Permission denied — أنت تحاول التثبيت في بايثون النظام بدون صلاحيات root. الحل الصحيح ليس sudo pip install، بل إنشاء بيئة افتراضية.
  • ModuleNotFoundError بعد التثبيت — في الغالب يكون pip install قد ثبّت الحزمة في نسخة بايثون مختلفة عن تلك التي تُشغّل سكربتك. تحقّق بالأمر which python و which pip (على macOS/Linux) أو where python و where pip (على ويندوز). أو الأفضل من ذلك: استخدم دائمًا python -m pip install ....

بدائل pip الحديثة

هناك عدة أدوات ستسمع عنها كثيرًا، وكلها متوافقة مع pip وتحل مشاكل محددة:

  • uv — مُثبِّت ومُحلِّل تبعيات أسرع بكثير من pip. يعمل كبديل مباشر لمعظم أوامر pip.
  • pipx — مخصّص لتثبيت أدوات سطر الأوامر (مثل black و ruff و httpie) داخل بيئات افتراضية معزولة، بحيث تكون متاحة عالميًا دون أن تتصادم مع تبعيات مشاريعك.
  • poetry و hatch — أدوات لإدارة المشاريع تجمع بين إدارة البيئات الافتراضية وحل التبعيات وبناء الحزمة في أداة واحدة.

لست بحاجة إلى أيٍّ منها من اليوم الأول. أتقن pip أولًا، ثم انتقل إلى غيره حين تبدأ تشعر فعليًا بالمشاكل التي تحلّها هذه الأدوات.

الخطوة التالية: البيئات الافتراضية

الحزم والبيئات الافتراضية صنوان لا ينفصلان، وقد رأيت السبب. في الصفحة التالية نتناول venv بالتفصيل: كيف تُنشئها، تُفعّلها، تُعطّلها، وما هي العادات البسيطة التي تبقي مشاريع بايثون مرتّبة ومنظّمة.

الأسئلة الشائعة

ما هي أداة pip في بايثون؟

pip هي أداة تثبيت الحزم الرسمية في بايثون — أي الأداة التي تُنزّل المكتبات الخارجية وتثبّتها من مستودع PyPI. مثلاً الأمر pip install requests يجلب مكتبة requests ويضعها في مكان يتعرّف عليه مفسّر بايثون عند الاستيراد. وهي تأتي مُضمّنة مع أي إصدار حديث من Python 3.

كيف أُثبّت pip؟

في الغالب هي مُثبّتة أصلاً مع بايثون. لو نفّذت pip --version وظهرت لك رسالة أن الأمر غير موجود، جرّب python -m ensurepip --upgrade أو python -m pip install --upgrade pip. على macOS ولينكس، استخدم pip3 إذا لم يعمل pip المجرّد، لأنه يشير إلى تثبيت Python 3.

كيف أُحدّث pip إلى أحدث إصدار؟

نفّذ الأمر python -m pip install --upgrade pip. استخدام python -m pip بدلاً من pip لوحده يضمن أن التحديث سيطبّق على مفسّر بايثون الذي تستخدمه فعلاً — تفصيلة صغيرة لكنها مهمة جداً عند وجود أكثر من نسخة بايثون مثبّتة على الجهاز.

هل أُثبّت الحزم بشكل عام أم داخل بيئة افتراضية؟

داخل بيئة افتراضية، دائماً، لأي مشروع يتجاوز كونه سكربت عابر. التثبيت العام يُسبّب تعارضات بين إصدارات المكتبات في مشاريعك المختلفة ويلوّث بايثون النظام. الحل المختصر هو وحدة venv المدمجة مع بايثون — وقد خصّصنا لها صفحة كاملة عن البيئات الافتراضية.

تعلّم البرمجة مع Coddy

ابدأ الآن