إدارة إصدارات Python بسهولة باستخدام pyenv و virtualenv على Linux و macOS

1. ما هو pyenv؟

بالنسبة لمطوّري Python، غالبًا ما يحتاجون إلى استخدام إصدارات مختلفة من Python لكل مشروع على حدة. في هذه الحالات، يأتي دور أداة pyenv. فهي أداة تتيح لك إدارة عدة إصدارات من Python بسهولة والتبديل بينها حسب كل مشروع.

تحديات إدارة إصدارات Python

أثناء تطوير مشاريع Python، قد تحتاج إلى أكثر من إصدار مختلف. على سبيل المثال، قد يستخدم أحد المشاريع Python 3.9 بينما يحتاج مشروع آخر إلى Python 2.7. عادةً ما يكون الإصدار المثبّت على النظام واحدًا فقط، مما يجعل التبديل بين الإصدارات أمرًا معقدًا. هنا يأتي دور pyenv لحل هذه المشكلة.

مميزات pyenv

باستخدام pyenv يمكنك الحصول على الفوائد التالية:

  1. سهولة التبديل بين الإصدارات: يمكنك عبر pyenv التبديل بسهولة بين إصدار Python على مستوى النظام ككل أو على مستوى كل مشروع.
  2. إدارة متعددة للإصدارات: يمكنك إدارة عدة إصدارات مثبتة من Python عبر أمر واحد، مما يتيح لك التوافق مع متطلبات المشاريع المختلفة.
  3. دعم معظم أنظمة التشغيل (باستثناء Windows): يعمل على أنظمة مثل macOS وLinux بشكل فعّال.

آلية عمل pyenv

يقوم pyenv بإنشاء مجلدات منفصلة لكل إصدار من Python وتثبيت الإصدارات بداخلها. يمكن للمستخدم تحديد الإصدار المطلوب عبر الأوامر pyenv global أو pyenv local سواء على مستوى النظام بالكامل أو على مشروع محدد.

2. طريقة تثبيت pyenv

نظرة عامة

لاستخدام pyenv يجب أولًا تثبيته على نظامك. في هذا القسم، سنشرح خطوات التثبيت على أنظمة macOS وLinux. أما على Windows فلا يتم دعمه بشكل مباشر، ويفضَّل استخدام بدائل مثل WSL أو Anaconda.

خطوات التثبيت على macOS

في macOS، يمكن تثبيت pyenv بسهولة عبر أداة Homebrew، وهي مدير حزم لأنظمة macOS. اتبع الخطوات التالية:

  1. التحقق من تثبيت Homebrew
    افتح الطرفية ونفّذ الأمر التالي للتحقق:
   brew --version

إذا ظهر رقم الإصدار فهذا يعني أن Homebrew مثبت. إن لم يكن مثبتًا، قم بزيارة الموقع الرسمي لـ Homebrew واتبع التعليمات.

  1. تثبيت pyenv
    بعد التأكد من وجود Homebrew، نفّذ الأمر التالي:
   brew install pyenv
  1. إعداد المتغيرات البيئية
    لكي يعمل 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
  1. التحقق من التثبيت
    تأكّد من نجاح التثبيت بتنفيذ الأمر:
   pyenv --version

خطوات التثبيت على Linux

على أنظمة Linux، تكون الخطوات مشابهة تقريبًا لما هو في macOS، لكن يتم الاعتماد على مديري الحزم مثل apt أو yum. فيما يلي مثال لتثبيت pyenv على Ubuntu:

  1. تثبيت الحزم المطلوبة
    قبل تثبيت 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
  1. تثبيت pyenv
    باستخدام Git قم بتنفيذ:
   curl https://pyenv.run | bash
  1. إعداد المتغيرات البيئية
    أضف السطور التالية إلى ملف .bashrc أو .zshrc:
   export PATH="$HOME/.pyenv/bin:$PATH"
   eval "$(pyenv init --path)"

ثم أعد تشغيل الطرفية أو نفّذ:

   source ~/.bashrc
  1. التحقق من التثبيت
    نفّذ:
   pyenv --version

استكشاف الأخطاء

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

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. إدارة إصدارات Python

بعد تثبيت pyenv، يمكنك البدء بإدارة إصدارات Python المختلفة، سواء للتثبيت أو التبديل أو الإزالة.

تثبيت إصدارات Python

يمكنك تثبيت أي إصدار تريده بسهولة:

  1. عرض قائمة الإصدارات المتاحة
    باستخدام:
   pyenv install --list
  1. تثبيت إصدار محدد
    على سبيل المثال:
   pyenv install 3.9.1

التبديل بين الإصدارات

يمكنك التبديل بين الإصدارات عبر:

  1. على مستوى النظام بالكامل:
   pyenv global 3.9.1
  1. على مستوى المشروع فقط:
   pyenv local 3.8.0
  1. عرض الإصدار الحالي:
   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:

  1. التثبيت على macOS:
   brew install pyenv-virtualenv
  1. التثبيت على Linux:
   git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
  1. إعداد المتغيرات البيئية:
   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

  1. سهولة إدارة الإصدارات: يمكنك التبديل بين عدة إصدارات من Python سواء على مستوى النظام أو المشاريع بسهولة.
  2. استخدام البيئات الافتراضية: عند الدمج مع pyenv-virtualenv أو virtualenv، يمكن عزل المكتبات لكل مشروع بشكل مستقل.
  3. استكشاف الأخطاء: من المهم الانتباه للأخطاء المحتملة (مثل نقص المكتبات أو تعارض الإصدارات) ومعالجتها بسرعة عبر الإعدادات الصحيحة.

الخطوات التالية

  1. تحسين بيئة التطوير: بعد إتقان أساسيات pyenv، يمكنك التفكير في أدوات إضافية مثل pipenv أو poetry لإدارة الاعتمادات بشكل أبسط وأتمتة إعداد المشاريع.
  2. التوافق مع أنظمة مختلفة: بالنسبة لمستخدمي Windows، يمكن الاستفادة من WSL أو استخدام Anaconda كبديل فعال.
  3. التجربة العملية: لا تكتفِ بالقراءة النظرية، بل قم بتجربة pyenv فعليًا على مشاريعك الجديدة والقائمة. ستلاحظ كيف يسهل إدارة المكتبات والإصدارات ويجعل بيئة العمل أكثر مرونة.
オープンソースの力を活用する方法~Ubuntuの世界へようこそ~

目次 1 1. はじめに1.1 Pythonバージョン管理の重要性1.2 Ubuntuとpyenvの組み合わせの利点2 …

侍エンジニア塾