في عالم تطوير بايثون الديناميكي، تعد إدارة التبعيات وبيئات المشروع أمرًا بالغ الأهمية للحفاظ على سلامة العمل والنجاح. تخيل أنك تعمل على مشروعين مختلفين: أحدهما يتطلب إصدارًا أقدم لمكتبة شائعة مثل requests
، بينما يحتاج الآخر إلى أحدث الميزات. إن تثبيت كلاهما على مستوى النظام سيؤدي حتمًا إلى تعارضات، أعطال، وإحباط. هذه هي المشكلة بالضبط التي صُممت بيئات بايثون الافتراضية لحلها.
سيرشدك هذا البرنامج التعليمي عبر أساسيات بيئات بايثون الافتراضية، مع التركيز بشكل خاص على عملية التنشيط باستخدام الوحدة المضمنة venv
. سنغطي سبب كونها ضرورية، وكيفية إنشائها، والأهم من ذلك، الأوامر خطوة بخطوة لتنشيطها عبر أنظمة التشغيل وقذائف الأوامر المختلفة.
هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى قدر من الإنتاجية؟
Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول أكثر بكثير!
ما هي البيئة الافتراضية بالضبط؟ (ولماذا تحتاجها بالتأكيد)
في جوهرها، بيئة بايثون الافتراضية هي شجرة دليل معزولة تحتوي على تثبيت بايثون محدد ومجموعة من الحزم الإضافية. فكر فيها كفقاعة مكتفية ذاتيًا لمشروع بايثون الخاص بك.
المفاهيم الرئيسية:
- العزل: عند إنشاء وتنشيط بيئة افتراضية، يتم وضع أي حزم تقوم بتثبيتها (
pip install ...
) داخل دليل تلك البيئة، وليس في تثبيت بايثون العام الخاص بك. هذا يمنع التعارضات بين المشاريع التي لديها متطلبات تبعيات مختلفة. يمكن للمشروع A استخدامrequests==2.20.0
بينما يستخدم المشروع Brequests==2.31.0
دون التدخل في بعضهما البعض أو في إعداد بايثون الأساسي لنظامك. - إدارة التبعيات: البيئات الافتراضية تجعل إدارة تبعيات المشروع واضحة وقابلة للتكرار. يمكنك إنشاء قائمة بجميع الحزم (وإصداراتها المحددة) المثبتة في بيئة (عادةً باستخدام
pip freeze > requirements.txt
). يمكن بعد ذلك مشاركة هذا الملف مع المتعاونين أو استخدامه في خطوط أنابيب النشر لإعادة إنشاء نفس البيئة بالضبط في مكان آخر (pip install -r requirements.txt
). - التحكم في الإصدار: على الرغم من أنه أقل شيوعًا مع
venv
نفسها (والتي تستخدم عادةً إصدار بايثون الذي تم إنشاؤها به)، فإن المفهوم يسمح لك بربط مشروع بإصدار مترجم بايثون محدد متاح على نظامك أثناء الإنشاء. الأدوات الأكثر تقدمًا تبني على هذا لإدارة إصدار بايثون بشكل أكثر صرامة. - النظافة: تحافظ على تثبيت بايثون العام الخاص بك مرتبًا. الأدوات الأساسية المطلوبة عالميًا فقط (مثل
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
، ستلاحظ:
- اختفاء البادئة
(.venv)
من موجه القذيفة الخاص بك. - تشغيل
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
طبيعة ثانية، مما يتيح سير عمل تطوير بايثون أنظف، أكثر موثوقية، وخاليًا من التعارضات. اجعلها عادة لكل مشروع بايثون جديد تبدأه!
هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى قدر من الإنتاجية؟
Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول أكثر بكثير!