أدوات مفيدة للتطوير المحلي

أدوات مفيدة تساعدك في تطوير كود Python على Exercism على جهازك.


Note

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



قبل أن تبدأ الاستكشاف، تأكد من تثبيت إصدار حديث من Python. تدعم منصة Exercism على الويب حاليًا Python 3.10 - 3.13.5 (التمارين والاختبارات) وPython 3.13.5 (الأدوات). ويستخدم مشغّل الاختبارات على الإنترنت حاليًا pytest 8.4.0 وpytest-subtests 0.14.2. ويستخدم المحلّل على الإنترنت pylint 4.0.4. قد يؤدي استخدام إصدارات مختلفة من Python أو pytest أو pylint محليًا إلى نتائج مختلفة عن الموقع. لمزيد من المعلومات، راجع تثبيت Python محليًا.


البيئات الافتراضية

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

هناك العديد من الأدوات التي تُنشئ بيئات افتراضية أو ما يشبهها قيد الاستخدام اليوم، وهناك توجّه متنامٍ نحو استخدام بيانات تعريف النص البرمجي المضمّن، أو حاويات التطوير، أو docker بدلًا من البيئات الافتراضية. من المهم أن تجرّب استراتيجيات مختلفة وأن تجد ما يناسب أسلوبك في التطوير واحتياجات مشروعك. لا تفترض أن الاستراتيجيات هنا تصلح للجميع، أو أنها خياراتك الوحيدة. للحصول على عرض عام أوسع لأدوات لم نغطّها هنا، اطّلع على هذا المنشور من مدونة Bas Nijholt وابقَ فضوليًا.

هناك ثلاث أدوات رئيسية للبيئات الافتراضية سنتناولها هنا: venv من المكتبة القياسية في Python، وconda env الخارجية التي تستخدم مدير الحزم conda وعادةً توزيعة Anaconda من Python، وuv البديل الخارجي لـ pip + venv. جميعها الثلاث سهلة الاستخدام و/أو التثبيت إلى حد كبير.

بالإضافة إلى ذلك، فإن PyEnv وPoetry وvirtualenvwrapper أدوات يمكن أن تساعدك في إدارة إصدارات متعددة من Python وبيئات Python متعددة على الجهاز نفسه.


إنشاء بيئة افتراضية باستخدام venv

لإنشاء بيئة افتراضية باستخدام venv، انتقل بـ cd إلى المجلد الذي تريد تخزين بيئاتك فيه. يجب أن يكون هذا المجلد منفصلًا عن كود مشروعك، وألا تضيفه إلى نظام التحكم في الإصدارات. بعد ذلك، شغّل أمر venv مع اسم المجلد الذي تريد تخزين هذه البيئة المعيّنة فيه. من الشائع تسمية ذلك المجلد <project-name-here>_venv:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

لتفعيل البيئة الافتراضية، شغّل الأمر التالي:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

لتفعيل البيئة الافتراضية، شغّل الأمر التالي:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

بمجرد تفعيل venv، يمكنك تشغيل أوامر pip لتثبيت الحزم "داخل" البيئة. ستُربط الحزم المثبّتة بإصدار Python الخاص بـ venv، وستكون موجودة داخل {name_of_virtual_env}/Lib.

يمكن إلغاء تفعيل بيئة افتراضية باستدعاء النص البرمجي deactivate، الموجود في المجلد نفسه الذي يوجد فيه activate.


إنشاء بيئة افتراضية باستخدام conda

يمكن تثبيت أحدث إصدار من conda عبر miniconda. ورقة الغش هذه الخاصة بـ conda مفيدة جدًا، وكذلك وثائق conda.

أُنشئت conda في الأصل كمدير حزم لـ Python لتوزيعة Anaconda distribution الشائعة لـ "Python العلمي"، ثم عُمّمت ووُسّعت لاحقًا. تشبه بيئات Conda بيئات venv، والفرق الجوهري أن conda تستطيع إنشاء بيئات افتراضية وتثبيت حزم للعديد من لغات البرمجة الأخرى إلى جانب Python.

تشمل اللغات التي تدعمها Conda كلاً من R وJavaScript وRuby وFortran وC/C++ وScala وJava وغيرها. لمقارنة أوامر conda بأوامر venv، راجع مرجع الأوامر الخاص بـ conda.


MacOS/Linux

لإنشاء بيئة conda، اكتب ما يلي، مع استبدال {name of environment} بالاسم الذي تختاره، وpython={version} بإصدار Python الذي تريده. ويمكن أن يتبع ذلك أي حزم إضافية ترغب في تثبيتها داخل البيئة:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

يستخدم إنشاء بيئة conda على Windows الأوامر العامة نفسها المستخدمة في Linux/MacOS. ومع ذلك، يُوصى باستخدام موجّه أوامر cmd أو powershell الخاص بـ Anaconda بدلًا من إضافة conda إلى مسار النظام (path):

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

العمل على المشاريع باستخدام uv: uv

uv أداة لإدارة حزم ومشاريع Python من Astral، مكتوبة بـ Rust. صُمّمت لتكون بديلًا عن pip وvenv وpoetry وغيرها من أدوات إدارة حزم وتبعيات Python. وعلى عكس Conda أو Mamba، فإن uv متخصصة في Python فقط. ومع ذلك، تدعم uv بناء وحدات امتداد Python المكتوبة بلغات أخرى مثل Fortran. Astral هي أيضًا مطوّرة Ruff المدقّق الشهير وTY، مدقّق الأنواع الساكن لتلميحات الأنواع في Python، وكلاهما مكتوب بـ Rust.

بدلًا من الدخول في التفاصيل هنا، فإن وثائق UV هي أفضل مصدر لديك للتثبيت والإعداد.

مغلّف البيئة الافتراضية

المستندات والخلفية: virtualenvwrapper.

تعمل حزمة virtualenvwrapper فوق venv لإدارة جميع بيئاتك الافتراضية في مكان واحد. يمكنك إنشاء البيئات ونسخها وحذفها والتبديل بينها بأوامر شبيهة بأوامر Linux مثل lsvirtualenv (لسرد البيئات) وmkvirtualenv (لإنشاء بيئة). كما تتيح لك إضافة أدوات إدارة إضافية باستخدام الإضافات. ويمكنك حتى إنشاء إضافاتك الخاصة للأداة باستخدام هذا الدرس.


PyEnv

pyenv هي نسخة Python المنشعبة من أداتي rbenv/ruby-build الشهيرتين، معدّلة لـ Python. وهي في جوهرها مجموعة من النصوص البرمجية والأدوات الوسيطة التي تتيح ضبط إصدارات Python على مستوى النظام وعلى مستوى المستخدم. وهي تحاول التمسك بتقاليد Unix في أداة ذات غرض واحد، غير مزعجة، تؤدي مهمة واحدة بإتقان.

يمكن العثور على pyenv ووثائق pyenv على GitHub.



المحررات وبيئات التطوير المتكاملة



Visual Studio Code

Visual Studio Code (VS Code) محرر كود مجاني من إنتاج Microsoft. يتضمن دعمًا ممتازًا لكل من البيئات الافتراضية وبيئات conda، وكذلك docker (عبر إضافة docker)، ويمكن توسيعه بالعديد من الإضافات المختلفة للاختبار والتدقيق والتنسيق وتطوير الويب.

Python في VS Code

Extension-id: ms-python.python

ترويسة إضافة Python على VS Code

تُعد إضافة Python من Microsoft إضافة Python الرسمية من Microsoft إلى VS Code، ويُوصى بتثبيتها بشدة. وتتضمن مجموعة واسعة من الميزات، بما في ذلك إدارة البيئات وإدارة الاختبارات والتدقيق والتنقيح. اعتبارًا من أحدث إصدار، سيؤدي تثبيت إضافة Python من Microsoft إلى تنزيل pylance (حزمة شهيرة لتدقيق كود Python والتحقق منه)، وjupyter (للعمل مع Jupyter Notebooks).

  • يتوفر درس للإعداد هنا، كما أن مرجع الإعدادات مفيد جدًا.
  • يمكن العثور على معلومات حول إعداد إصدارات Python والعمل مع البيئات الافتراضية هنا.
  • يمكن العثور على معلومات حول إعداد unittest وpytest والعمل بهما في VS Code هنا.

PyCharm

PyCharm هو IDE (بيئة تطوير متكاملة) من تطوير JetBrains. وهو مصمّم خصيصًا لـ Python ويحظى بشعبية بين المحترفين . وكما هو الحال مع VS Code، يمكن توسيعه بإضافات وسمات وأدوات تنسيق متنوعة مدفوعة ومجانية. كما تدعم النسخة المدفوعة تطوير Django والتطوير باستخدام Docker والتكامل مع قواعد البيانات.

PyCharm و Pytest
  • يمكن العثور على خطوات إعداد pytest مع pycharm هنا.
  • يستخدم PyCharm unittest افتراضيًا، لذا يجب أن تكون pytest مثبّتة في البيئة التي تستخدمها مع pycharm (راجع مستندات المفسّر والبيئة أعلاه)، ثم وجّه pycharm إليها.
  • تشغيل الاختبارات مباشرة من واجهة المستخدم سهل جدًا، لكن لا تنسَ إلقاء نظرة جيدة على معاملات pytest الأساسية، حتى تضبطها كما يروق لك.
  • يمكن العثور على وثائق عامة حول تشغيل الاختبارات والتنقيح في pycharm هنا.
  • يمكن العثور على أدوات وإرشادات تنقيح إضافية هنا.

Spyder IDE

Spyder بيئة تطوير متكاملة لـ Python، مجانية ومفتوحة المصدر ومتعددة المنصات، مصمّمة للمجتمع العلمي. وهي غالبًا مضمنة مع توزيعة Anaconda من Python، لكن يمكن تثبيتها بمفردها واستخدامها مع أي إصدار من Python. نوصي بتثبيت مستقل لضمان أقصى قدر من المرونة، ولتفادي أي تعارضات بين الحزم.

تدعم Spyder بيئات venv وconda بالكامل. وتتضمن طرفية تفاعلية مدمجة IPython، ومُنقّحًا تفاعليًا، ودعمًا غنيًا لرسم المخططات واستكشاف البيانات داخل المحرر. وتُوفَّر ميزات إكمال الكود والتدقيق الإضافية عبر kite. وتُوفَّر التكاملات مع Jupyter Notebooks وأدوات الاختبار عبر إضافات طوّرها المجتمع. ويمكنك أيضًا كتابة إضافاتك الخاصة باستخدام Spyder API.


Emacs

Emacs محرر نصوص مجاني ومفتوح المصدر وقابل للتخصيص بدرجة عالية، مكتوب بـ Lisp. ويتوفر دليل ممتاز للتثبيت والإعداد على Real Python.

  • كما يضم Emacs Wiki دليلًا جيدًا للبرمجة بـ Python باستخدام Emacs.
  • كما يجمع Full Stack Python بعض المعلومات والروابط المفيدة للبدء مع Emacs.

Vim

Vim نسخة مجانية و"محسّنة" من محرر النصوص vi القياسي في Unix. وهو متاح على مجموعة واسعة من أنظمة التشغيل وتوزيعات Linux/Unix. ويتوفر دليل ممتاز للتثبيت والإعداد على Real Python، كما تتوفر أوراق غش مفيدة على vimsheet وglump وrtorr.

حتى إذا قرّرت أن تحرير كود Python في vim ليس مناسبًا لك، يُوصى بأن تتعرّف على مجموعة أساسية من الأوامر. غالبًا ما يكون vim أو vi محرر النصوص "الأساسي" أو "الافتراضي" في توزيعات Linux وUnix، وهو المحرر الافتراضي لرسائل git commit (من بين أمور أخرى) على تلك الأنظمة. من المرجّح أن تجد نفسك على نظام *nix بحاجة إلى تحرير ملف إعدادات مع توفّر vi فقط، لذا فإن معرفة كيفية الخروج من vim (على أقل تقدير) دفاع جيد عن النفس.


Spacemacs

Spacemacs (مستودع github) توزيعة مجانية من Emacs يقودها المجتمع وتجمع بين وظائف Emacs وVim.

  • يمكن العثور على الوثائق الرسمية هنا
  • يقدّم هذا الدليل على opensource عرضًا سريعًا لخيارات التثبيت والإعداد.
  • تضيف طبقة Python في Spacemacs وظائف للاختبار والتدقيق وإدارة البيئات وتنسيق الكود.

Sublime text

Sublime Text محرر نصوص مدفوع للبرمجة، من إنتاج Sublime HQ Pty Ltd. وهو مشابه لـ VS Code وAtom، مع العديد من الحزم والإضافات للتخصيص. يمكنك أيضًا تطوير إضافات خاصة بك للمحرر باستخدام Python.