Apidog

منصة تطوير API تعاونية متكاملة

تصميم API

توثيق API

تصحيح أخطاء API

محاكاة API

اختبار API الآلي

تفعيل بيئة بايثون افتراضية: دليل المبتدئين

Stefania Boiko

Stefania Boiko

Updated on مايو 2, 2025

في عالم تطوير بايثون الديناميكي، تعد إدارة التبعيات وبيئات المشروع أمرًا بالغ الأهمية للحفاظ على سلامة العمل والنجاح. تخيل أنك تعمل على مشروعين مختلفين: أحدهما يتطلب إصدارًا أقدم لمكتبة شائعة مثل requests، بينما يحتاج الآخر إلى أحدث الميزات. إن تثبيت كلاهما على مستوى النظام سيؤدي حتمًا إلى تعارضات، أعطال، وإحباط. هذه هي المشكلة بالضبط التي صُممت بيئات بايثون الافتراضية لحلها.

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

💡
هل تبحث عن أداة رائعة لاختبار واجهات برمجة التطبيقات (API Testing) تولد توثيقًا جميلًا لواجهات برمجة التطبيقات؟

هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى قدر من الإنتاجية؟

Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول أكثر بكثير!
button

ما هي البيئة الافتراضية بالضبط؟ (ولماذا تحتاجها بالتأكيد)

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

المفاهيم الرئيسية:

  1. العزل: عند إنشاء وتنشيط بيئة افتراضية، يتم وضع أي حزم تقوم بتثبيتها (pip install ...) داخل دليل تلك البيئة، وليس في تثبيت بايثون العام الخاص بك. هذا يمنع التعارضات بين المشاريع التي لديها متطلبات تبعيات مختلفة. يمكن للمشروع A استخدام requests==2.20.0 بينما يستخدم المشروع B requests==2.31.0 دون التدخل في بعضهما البعض أو في إعداد بايثون الأساسي لنظامك.
  2. إدارة التبعيات: البيئات الافتراضية تجعل إدارة تبعيات المشروع واضحة وقابلة للتكرار. يمكنك إنشاء قائمة بجميع الحزم (وإصداراتها المحددة) المثبتة في بيئة (عادةً باستخدام pip freeze > requirements.txt). يمكن بعد ذلك مشاركة هذا الملف مع المتعاونين أو استخدامه في خطوط أنابيب النشر لإعادة إنشاء نفس البيئة بالضبط في مكان آخر (pip install -r requirements.txt).
  3. التحكم في الإصدار: على الرغم من أنه أقل شيوعًا مع venv نفسها (والتي تستخدم عادةً إصدار بايثون الذي تم إنشاؤها به)، فإن المفهوم يسمح لك بربط مشروع بإصدار مترجم بايثون محدد متاح على نظامك أثناء الإنشاء. الأدوات الأكثر تقدمًا تبني على هذا لإدارة إصدار بايثون بشكل أكثر صرامة.
  4. النظافة: تحافظ على تثبيت بايثون العام الخاص بك مرتبًا. الأدوات الأساسية المطلوبة عالميًا فقط (مثل pip نفسها، venv، ربما أدوات التحقق من الأكواد أو المنسقات إذا كنت تفضلها عالميًا) تقيم في دليل site-packages الرئيسي. الفوضى الخاصة بالمشروع تبقى داخل البيئة الافتراضية للمشروع.

المشكلة التي تم حلها:

ضع في اعتبارك هذا السيناريو بدون بيئات افتراضية:

  • تقوم بتثبيت CoolLib v1.0 للمشروع ProjectAlpha.
  • لاحقًا، تبدأ المشروع ProjectBeta الذي يتطلب CoolLib v2.0 (الذي يحتوي على تغييرات كسرية من الإصدار 1.0).
  • تقوم بترقية CoolLib عالميًا إلى v2.0.
  • الآن، يتعطل المشروع ProjectAlpha لأنه تم بناؤه متوقعًا CoolLib v1.0.

مع البيئات الافتراضية:

  • أنشئ venv_alpha للمشروع ProjectAlpha. قم بتنشيطها. قم بتثبيت CoolLib v1.0. قم بإلغاء التنشيط.
  • أنشئ venv_beta للمشروع ProjectBeta. قم بتنشيطها. قم بتثبيت CoolLib v2.0. قم بإلغاء التنشيط.

كلا المشروعين يعملان بشكل مثالي، باستخدام نسخ معزولة خاصة بهما من CoolLib بالإصدارات المطلوبة.

تقديم venv: حل بايثون المضمن

منذ بايثون 3.3، تم تضمين وحدة venv في المكتبة القياسية، مما يجعلها الطريقة الموصى بها لإنشاء بيئات افتراضية خفيفة الوزن. قبل venv، كانت حزمة virtualenv هي الحل الخارجي المفضل (ولا تزال تقدم بعض الميزات الإضافية)، ولكن لمعظم حالات الاستخدام الشائعة، venv كافية ومتاحة بسهولة.

الخطوة 1: إنشاء بيئتك الافتراضية

قبل أن تتمكن من تنشيط بيئة، تحتاج إلى إنشائها. يتم ذلك باستخدام وحدة venv، يتم تنفيذها عبر علامة -m مع مترجم بايثون المطلوب.

افتح الطرفية أو موجه الأوامر، انتقل إلى الدليل الجذر لمشروعك، وقم بتشغيل الأمر التالي:

# For Linux/macOS
python3 -m venv <environment_name>

# For Windows (often just 'python' works)
python -m venv <environment_name>

الشرح:

  • python3 أو python: يحدد مترجم بايثون الذي تريد أن تستند إليه البيئة الافتراضية. إذا كان لديك عدة إصدارات من بايثون مثبتة، كن صريحًا (على سبيل المثال، python3.11 -m venv ...).
  • -m venv: يخبر بايثون بتشغيل وحدة venv كسكريبت.
  • <environment_name>: هذا هو الاسم الذي تختاره للدليل الذي سيحتوي على ملفات بيئتك الافتراضية. تتضمن الاصطلاحات الشائعة:
  • venv
  • .venv (النقطة البادئة غالبًا ما تخفي الدليل افتراضيًا في أنظمة *nix وتشير لبعض الأدوات إلى أنها بيانات وصفية. هذا معيار معتمد على نطاق واسع.)
  • env
  • .env

دعنا نستخدم .venv كاسم مثال:

# Linux/macOS
python3 -m venv .venv

# Windows
python -m venv .venv

بعد تشغيل هذا الأمر، سترى دليلًا جديدًا باسم .venv (أو أي اسم اخترته) في مجلد مشروعك.

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

إذا نظرت داخل دليل .venv، ستجد هيكلًا مثل هذا (تختلف التفاصيل قليلاً بين أنظمة التشغيل):

  • bin/ (Linux/macOS) أو Scripts/ (Windows): هذا هو الدليل الحاسم الذي يحتوي على ملف بايثون التنفيذي الخاص بهذه البيئة، وملف pip التنفيذي المرتبط بهذه البيئة، والأهم من ذلك، سكريبتات التنشيط (activate، activate.bat، Activate.ps1، إلخ).
  • include/: يحتوي على ملفات رأس C لتجميع وحدات امتداد بايثون (أقل أهمية للاستخدام الأساسي).
  • lib/ (Linux/macOS) أو Lib/ (Windows): يحتوي على نسخة أو رابط رمزي للمكتبة القياسية لبايثون، وبشكل حاسم، الدليل الفرعي site-packages حيث ستقيم الحزم المثبتة في هذه البيئة.
  • pyvenv.cfg: ملف تهيئة يحدد الخيارات المستخدمة لإنشاء البيئة، مثل مترجم بايثون الأساسي المستخدم.

الخطوة 2: تنشيط البيئة الافتراضية (الحدث الرئيسي!)

إنشاء البيئة يقوم بإعداد الهيكل، لكن تنشيطها يعدل جلسة القذيفة الحالية لديك لاستخدام مترجم بايثون وحزم تلك البيئة افتراضيًا. التنشيط يضيف بشكل أساسي دليل سكريبت البيئة (.venv/bin أو .venv/Scripts) إلى متغير البيئة PATH الخاص بقذيفة الأوامر لديك.

يعتمد أمر التنشيط الدقيق على نظام التشغيل والقذيفة التي تستخدمها.

أ. ويندوز:

موجه الأوامر (cmd.exe):

  • انتقل إلى دليل مشروعك الذي يحتوي على مجلد .venv.
  • قم بتشغيل السكريبت .bat:
.venv\Scripts\activate.bat

باور شيل (PowerShell):

  • انتقل إلى دليل مشروعك.
  • قم بتشغيل السكريبت .ps1:
.venv\Scripts\Activate.ps1
  • ملاحظة هامة حول سياسة التنفيذ: افتراضيًا، قد يمنع PowerShell تشغيل السكريبتات لأسباب أمنية. إذا رأيت خطأ مثل "...لا يمكن تحميله لأن تشغيل السكريبتات معطل على هذا النظام"، فقد تحتاج إلى تغيير سياسة التنفيذ لجلستك الحالية أو المستخدم. أمر شائع (ولكن استخدمه بحذر، افهم الآثار الأمنية) هو:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

قد تحتاج إلى تشغيل PowerShell كمسؤول لتغيير السياسات. استشر وثائق PowerShell للحصول على تفاصيل حول سياسات التنفيذ. غالبًا ما يعمل تشغيل .venv\Scripts\Activate.ps1 مباشرة إذا كانت السياسة تسمح بذلك.

Git Bash (أو قذائف أخرى شبيهة بـ Bash على ويندوز):

  • انتقل إلى دليل مشروعك.
  • استخدم الأمر source (مشابه لـ Linux/macOS):
source .venv/Scripts/activate

(لاحظ الشرطات المائلة للأمام وعدم وجود امتداد للملف).

ب. macOS / لينكس:

Bash أو Zsh (الافتراضيات الشائعة):

  • انتقل إلى دليل مشروعك.
  • استخدم الأمر source:
source .venv/bin/activate

Fish Shell:

  • انتقل إلى دليل مشروعك.
  • يستخدم Fish سكريبت تنشيط مختلفًا:
source .venv/bin/activate.fish

Csh أو Tcsh:

  • انتقل إلى دليل مشروعك.
  • استخدم السكريبت .csh:
source .venv/bin/activate.csh

كيف تعرف أنها نشطة؟

العلامة الأكثر فورية التي تدل على أنك قمت بتنشيط البيئة الافتراضية بنجاح هي تغيير في موجه القذيفة لديك. اسم البيئة (مثل (.venv)) سيظهر عادةً في بداية سطر الموجه:

# Before activation (example)
user@hostname:~/my_project$

# After activation (example)
(.venv) user@hostname:~/my_project$

هذه البادئة تخبرك فورًا أن جلسة القذيفة الخاصة بك تعمل حاليًا ضمن البيئة الافتراضية المحددة. أي أوامر python أو pip تقوم بتشغيلها الآن ستستخدم الملفات التنفيذية والحزم داخل .venv.

يمكنك التحقق من ذلك:

# Check which Python executable is being used
which python  # Linux/macOS
where python # Windows (cmd/powershell)

# Check which pip is being used
which pip # Linux/macOS
where pip # Windows (cmd/powershell)

يجب أن يشير الإخراج إلى المسارات داخل دليل .venv الخاص بك.

الخطوة 3: العمل داخل البيئة المنشطة

مع تنشيط البيئة، يمكنك الآن:

  • تثبيت الحزم: يتم تثبيت الحزم فقط في البيئة النشطة.
(.venv) $ pip install requests
(.venv) $ pip install flask pandas numpy
  • التحقق من الحزم المثبتة: انظر ما هو خاص بهذه البيئة.
(.venv) $ pip list
(.venv) $ pip freeze

(pip freeze يعطي إخراجًا مناسبًا لـ requirements.txt).

  • تشغيل سكريبتات بايثون: سيستخدم سكريبتك مترجم بايثون الخاص بالبيئة والحزم المثبتة.
(.venv) $ python my_script.py

الخطوة 4: إلغاء تنشيط البيئة الافتراضية

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

ببساطة قم بتشغيل الأمر:

(.venv) $ deactivate

يعمل هذا الأمر عالميًا عبر جميع القذائف وأنظمة التشغيل المذكورة أعلاه بمجرد أن تكون البيئة نشطة.

بعد تشغيل deactivate، ستلاحظ:

  1. اختفاء البادئة (.venv) من موجه القذيفة الخاص بك.
  2. تشغيل which python / where python سيشير الآن مرة أخرى إلى مترجم بايثون العام الخاص بك.

ملخص أفضل الممارسات

  • الاسم: استخدم .venv أو venv. .venv أصبح معيارًا متزايدًا.
  • الموقع: أنشئ دليل البيئة مباشرة داخل المجلد الجذر لمشروعك.
  • .gitignore: بشكل حاسم، أضف اسم دليل بيئتك الافتراضية إلى ملف .gitignore الخاص بمشروعك. هذا يمنعك من ارتكاب حزم مثبتة بحجم جيجابايت عن طريق الخطأ إلى التحكم في الإصدار. ملف requirements.txt هو ما يجب ارتكابه.
# .gitignore
.venv/
  • واحدة لكل مشروع: عادةً، يحصل كل مشروع مميز على بيئته الافتراضية الخاصة به.
  • ملف المتطلبات: حافظ على ملف requirements.txt:
# To generate/update
(.venv) $ pip freeze > requirements.txt

# To install from file in a new environment
(.venv) $ pip install -r requirements.txt

استكشاف أخطاء التنشيط الشائعة وإصلاحها

  • "Command not found" / "No such file or directory":
  • هل أنت في الدليل الصحيح (الذي يحتوي على مجلد .venv
  • هل كتبت المسار بشكل صحيح (.venv/bin/activate مقابل .venv\Scripts\activate.bat)؟ تحقق من الشرطات المائلة للأمام مقابل الشرطات المائلة للخلف.
  • هل تستخدم الأمر الصحيح لقذيفة الأوامر الخاصة بك (source لـ bash/zsh/fish، مسار مباشر لـ cmd، .ps1 لـ PowerShell)؟
  • خطأ سياسة تنفيذ PowerShell: راجع قسم تنشيط PowerShell أعلاه بخصوص Set-ExecutionPolicy. كن حذرًا وافهم الآثار قبل تغيير إعدادات الأمان.
  • Permissions Denied: تأكد من أن سكريبتات التنشيط لديها أذونات تنفيذ (عادةً ما يتم تعيينها بشكل صحيح بواسطة venv، ولكن تحقق باستخدام ls -l على Linux/macOS إذا لزم الأمر).

الخلاصة

تنشيط بيئة بايثون الافتراضية مهارة أساسية لأي مطور بايثون. إنها البوابة لإدارة التبعيات الفعالة، عزل المشروع، وبناءات قابلة للتكرار. بينما يختلف الأمر الدقيق قليلاً اعتمادًا على نظام التشغيل والقذيفة الخاصة بك، تتضمن العملية الأساسية الانتقال إلى مشروعك، تشغيل سكريبت التنشيط المناسب (عادةً ما يوجد داخل .venv/bin/ أو .venv/Scripts/)، وتأكيد التنشيط عبر موجه القذيفة المعدل. بمجرد إتقانها، يصبح استخدام venv طبيعة ثانية، مما يتيح سير عمل تطوير بايثون أنظف، أكثر موثوقية، وخاليًا من التعارضات. اجعلها عادة لكل مشروع بايثون جديد تبدأه!

💡
هل تبحث عن أداة رائعة لاختبار واجهات برمجة التطبيقات (API Testing) تولد توثيقًا جميلًا لواجهات برمجة التطبيقات؟

هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى قدر من الإنتاجية؟

Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول أكثر بكثير!
button