1. ما هو pyenv؟
بالنسبة لمطوّري Python، غالبًا ما يحتاجون إلى استخدام إصدارات مختلفة من Python لكل مشروع على حدة. في هذه الحالات، يأتي دور أداة pyenv
. فهي أداة تتيح لك إدارة عدة إصدارات من Python بسهولة والتبديل بينها حسب كل مشروع.
تحديات إدارة إصدارات Python
أثناء تطوير مشاريع Python، قد تحتاج إلى أكثر من إصدار مختلف. على سبيل المثال، قد يستخدم أحد المشاريع Python 3.9 بينما يحتاج مشروع آخر إلى Python 2.7. عادةً ما يكون الإصدار المثبّت على النظام واحدًا فقط، مما يجعل التبديل بين الإصدارات أمرًا معقدًا. هنا يأتي دور pyenv
لحل هذه المشكلة.
مميزات pyenv
باستخدام pyenv
يمكنك الحصول على الفوائد التالية:
- سهولة التبديل بين الإصدارات: يمكنك عبر
pyenv
التبديل بسهولة بين إصدار Python على مستوى النظام ككل أو على مستوى كل مشروع. - إدارة متعددة للإصدارات: يمكنك إدارة عدة إصدارات مثبتة من Python عبر أمر واحد، مما يتيح لك التوافق مع متطلبات المشاريع المختلفة.
- دعم معظم أنظمة التشغيل (باستثناء Windows): يعمل على أنظمة مثل macOS وLinux بشكل فعّال.
آلية عمل pyenv
يقوم pyenv
بإنشاء مجلدات منفصلة لكل إصدار من Python وتثبيت الإصدارات بداخلها. يمكن للمستخدم تحديد الإصدار المطلوب عبر الأوامر pyenv global
أو pyenv local
سواء على مستوى النظام بالكامل أو على مشروع محدد.

2. طريقة تثبيت pyenv
نظرة عامة
لاستخدام pyenv
يجب أولًا تثبيته على نظامك. في هذا القسم، سنشرح خطوات التثبيت على أنظمة macOS وLinux. أما على Windows فلا يتم دعمه بشكل مباشر، ويفضَّل استخدام بدائل مثل WSL أو Anaconda.
خطوات التثبيت على macOS
في macOS، يمكن تثبيت pyenv
بسهولة عبر أداة Homebrew
، وهي مدير حزم لأنظمة macOS. اتبع الخطوات التالية:
- التحقق من تثبيت Homebrew
افتح الطرفية ونفّذ الأمر التالي للتحقق:
brew --version
إذا ظهر رقم الإصدار فهذا يعني أن Homebrew مثبت. إن لم يكن مثبتًا، قم بزيارة الموقع الرسمي لـ Homebrew واتبع التعليمات.
- تثبيت pyenv
بعد التأكد من وجود Homebrew، نفّذ الأمر التالي:
brew install pyenv
- إعداد المتغيرات البيئية
لكي يعملpyenv
يجب إضافة إعداداته إلى ملف.bash_profile
أو.zshrc
:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
ثم أعد تشغيل الطرفية أو نفّذ:
source ~/.bash_profile
- التحقق من التثبيت
تأكّد من نجاح التثبيت بتنفيذ الأمر:
pyenv --version
خطوات التثبيت على Linux
على أنظمة Linux، تكون الخطوات مشابهة تقريبًا لما هو في macOS، لكن يتم الاعتماد على مديري الحزم مثل apt
أو yum
. فيما يلي مثال لتثبيت pyenv
على Ubuntu:
- تثبيت الحزم المطلوبة
قبل تثبيتpyenv
، يجب تثبيت الحزم الأساسية:
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
- تثبيت pyenv
باستخدام Git قم بتنفيذ:
curl https://pyenv.run | bash
- إعداد المتغيرات البيئية
أضف السطور التالية إلى ملف.bashrc
أو.zshrc
:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
ثم أعد تشغيل الطرفية أو نفّذ:
source ~/.bashrc
- التحقق من التثبيت
نفّذ:
pyenv --version
استكشاف الأخطاء
إذا ظهرت مشاكل أثناء التثبيت، فقد تكون بعض المكتبات الناقصة هي السبب. على أنظمة Linux قد تختلف المكتبات المطلوبة حسب التوزيعة، لذلك يُنصح بالرجوع إلى التوثيق الرسمي لإضافة ما ينقص.

3. إدارة إصدارات Python
بعد تثبيت pyenv
، يمكنك البدء بإدارة إصدارات Python المختلفة، سواء للتثبيت أو التبديل أو الإزالة.
تثبيت إصدارات Python
يمكنك تثبيت أي إصدار تريده بسهولة:
- عرض قائمة الإصدارات المتاحة
باستخدام:
pyenv install --list
- تثبيت إصدار محدد
على سبيل المثال:
pyenv install 3.9.1
التبديل بين الإصدارات
يمكنك التبديل بين الإصدارات عبر:
- على مستوى النظام بالكامل:
pyenv global 3.9.1
- على مستوى المشروع فقط:
pyenv local 3.8.0
- عرض الإصدار الحالي:
pyenv version
إلغاء تثبيت إصدار
إذا لم تعد بحاجة إلى إصدار معين:
pyenv uninstall 3.9.1

4. استخدام pyenv مع virtualenv
يوفر pyenv
إدارة قوية لإصدارات Python، لكن لإدارة المكتبات والاعتمادات الخاصة بكل مشروع بشكل أفضل، من الشائع دمجه مع virtualenv
(البيئة الافتراضية).
ما هو virtualenv؟
virtualenv
أداة لإنشاء بيئات افتراضية مستقلة لكل مشروع، بحيث يتم عزل المكتبات والحزم. هذا يمنع أي تعارض بين المشاريع المختلفة على نفس الجهاز.
على سبيل المثال: يمكن أن يستخدم المشروع A مكتبة requests
بإصدار 2.0، بينما يستخدم المشروع B نفس المكتبة بإصدار 3.0، وكل مشروع سيبقى مستقلاً دون تعارض.
الفرق بين pyenv و virtualenv
– pyenv
: يركز على إدارة إصدارات Python (تثبيت/تبديل بين الإصدارات).
– virtualenv
: يركز على إدارة المكتبات والاعتمادات داخل بيئة افتراضية مستقلة.
باستخدامهما معًا تحصل على المزايا التالية:
- إدارة نسخ Python مختلفة عبر
pyenv
. - عزل الاعتمادات لكل مشروع عبر
virtualenv
.
تثبيت pyenv-virtualenv
يمكنك تسهيل إدارة البيئات الافتراضية عبر إضافة ملحق pyenv-virtualenv
:
- التثبيت على macOS:
brew install pyenv-virtualenv
- التثبيت على Linux:
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
- إعداد المتغيرات البيئية:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
إنشاء بيئة افتراضية
لإنشاء بيئة افتراضية جديدة باستخدام إصدار محدد من Python:
pyenv virtualenv 3.8.0 my_project_env
سيتم إنشاء بيئة مستقلة باسم my_project_env
.
التبديل إلى البيئة الافتراضية
لتفعيل البيئة داخل مشروع:
pyenv local my_project_env
حذف البيئة الافتراضية
إذا لم تعد بحاجة إليها:
pyenv uninstall my_project_env
فوائد استخدام virtualenv
الجمع بين pyenv
و virtualenv
يضمن عزل كامل بين المشاريع، مما يقلل من تعارض المكتبات ويجعل بيئة التطوير أكثر استقرارًا.

5. ملاحظات مهمة عند استخدام pyenv
يوفر pyenv
و virtualenv
مرونة كبيرة في إدارة الإصدارات والبيئات، لكن هناك بعض النقاط التي يجب الانتباه إليها لتجنب المشاكل.
1. دعم محدود على Windows
pyenv
موجه بشكل أساسي إلى أنظمة macOS وLinux. أما على Windows فالدعم محدود. يمكن للمستخدمين على Windows الاعتماد على:
- Windows Subsystem for Linux (WSL): لتشغيل بيئة Linux واستخدام
pyenv
داخلها. - Anaconda: كبديل لإدارة الإصدارات والبيئات على Windows.
2. أخطاء بسبب نقص المكتبات
أثناء التثبيت على Linux، قد تظهر رسائل خطأ إذا كانت بعض المكتبات مفقودة مثل:
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
الحل: تثبيت المكتبات الناقصة مثل libbz2-dev
و libssl-dev
عبر:
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
3. تعارض بين pyenv و Python المثبت مسبقًا
قد يحدث تعارض إذا كان النظام يحتوي مسبقًا على Python وإعدادات المسارات (PATH) غير صحيحة.
الحل:
- تأكد من وجود الأسطر التالية في
.bashrc
أو.zshrc
:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
4. فشل تثبيت إصدار محدد
قد يفشل التثبيت بسبب نقص أدوات البناء.
الحل: ثبّت الحزم build-essential
و libssl-dev
وأعد المحاولة.
5. أخطاء في كتابة رقم الإصدار
إذا تمت كتابة إصدار غير مدعوم ستظهر أخطاء.
الحل: استخدم:
pyenv install --list
للتحقق من الإصدارات المتاحة.
6. تعارض في البيئات الافتراضية
إذا أنشأت عدة بيئات افتراضية باستخدام نفس الإصدار من Python، قد تحدث تعارضات بين الحزم.
الحل:
- أنشئ بيئة افتراضية مستقلة لكل مشروع عبر
virtualenv
أوpyenv-virtualenv
لتفادي المشاكل.
6. الخلاصة والخطوات التالية
يُعتبر pyenv
أداة قوية وفعّالة لإدارة إصدارات Python، خاصة للمطورين الذين يعملون على مشاريع متعددة تتطلب إصدارات مختلفة. يتيح لك pyenv
التبديل بين الإصدارات بسهولة وتنظيم بيئة التطوير بكفاءة. وعند دمجه مع virtualenv
، يصبح من السهل أيضًا إدارة الاعتمادات الخاصة بكل مشروع بشكل منفصل.
أهم النقاط حول استخدام pyenv
- سهولة إدارة الإصدارات: يمكنك التبديل بين عدة إصدارات من Python سواء على مستوى النظام أو المشاريع بسهولة.
- استخدام البيئات الافتراضية: عند الدمج مع
pyenv-virtualenv
أوvirtualenv
، يمكن عزل المكتبات لكل مشروع بشكل مستقل. - استكشاف الأخطاء: من المهم الانتباه للأخطاء المحتملة (مثل نقص المكتبات أو تعارض الإصدارات) ومعالجتها بسرعة عبر الإعدادات الصحيحة.
الخطوات التالية
- تحسين بيئة التطوير: بعد إتقان أساسيات
pyenv
، يمكنك التفكير في أدوات إضافية مثلpipenv
أوpoetry
لإدارة الاعتمادات بشكل أبسط وأتمتة إعداد المشاريع. - التوافق مع أنظمة مختلفة: بالنسبة لمستخدمي Windows، يمكن الاستفادة من WSL أو استخدام Anaconda كبديل فعال.
- التجربة العملية: لا تكتفِ بالقراءة النظرية، بل قم بتجربة
pyenv
فعليًا على مشاريعك الجديدة والقائمة. ستلاحظ كيف يسهل إدارة المكتبات والإصدارات ويجعل بيئة العمل أكثر مرونة.
目次 1 1. はじめに1.1 Pythonバージョン管理の重要性1.2 Ubuntuとpyenvの組み合わせの利点2 …