أدوات مفيدة تساعدك في تطوير كود Python على Exercism على جهازك.
هذه مجموعة من الأدوات الشائعة في مجتمعنا. ولا يُقصد بها أن تكون إلزامية أو شاملة. نرى أن هذه الأدوات تؤدي عملها جيدًا، لكن هناك بالتأكيد أدوات أخرى جيدة أيضًا. وإذا كانت لديك توصية بمحرر أو بيئة تطوير متكاملة أو أداة أو إضافة، فنشجعك على إضافتها إلى هذا المستند على 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.
لإنشاء بيئة 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
يستخدم إنشاء بيئة 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 أداة لإدارة حزم ومشاريع 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 هي نسخة Python المنشعبة من أداتي rbenv/ruby-build الشهيرتين، معدّلة لـ Python.
وهي في جوهرها مجموعة من النصوص البرمجية والأدوات الوسيطة التي تتيح ضبط إصدارات Python على مستوى النظام وعلى مستوى المستخدم.
وهي تحاول التمسك بتقاليد Unix في أداة ذات غرض واحد، غير مزعجة، تؤدي مهمة واحدة بإتقان.
يمكن العثور على pyenv ووثائق pyenv على GitHub.
Visual Studio Code (VS Code) محرر كود مجاني من إنتاج Microsoft.
يتضمن دعمًا ممتازًا لكل من البيئات الافتراضية وبيئات conda، وكذلك docker (عبر إضافة docker)، ويمكن توسيعه بالعديد من الإضافات المختلفة للاختبار والتدقيق والتنسيق وتطوير الويب.
Extension-id: ms-python.python

تُعد إضافة Python من Microsoft إضافة Python الرسمية من Microsoft إلى VS Code، ويُوصى بتثبيتها بشدة. وتتضمن مجموعة واسعة من الميزات، بما في ذلك إدارة البيئات وإدارة الاختبارات والتدقيق والتنقيح. اعتبارًا من أحدث إصدار، سيؤدي تثبيت إضافة Python من Microsoft إلى تنزيل pylance (حزمة شهيرة لتدقيق كود Python والتحقق منه)، وjupyter (للعمل مع Jupyter Notebooks).
PyCharm هو IDE (بيئة تطوير متكاملة) من تطوير JetBrains.
وهو مصمّم خصيصًا لـ Python ويحظى بشعبية بين المحترفين .
وكما هو الحال مع VS Code، يمكن توسيعه بإضافات وسمات وأدوات تنسيق متنوعة مدفوعة ومجانية.
كما تدعم النسخة المدفوعة تطوير Django والتطوير باستخدام Docker والتكامل مع قواعد البيانات.
unittest افتراضيًا، لذا يجب أن تكون pytest مثبّتة في البيئة التي تستخدمها مع pycharm (راجع مستندات المفسّر والبيئة أعلاه)، ثم وجّه pycharm إليها.coverage الخاصة بـ pytest مُنقّح pycharm.
راجع تهيئة التشغيل/التنقيح: pytest لمزيد من المعلومات.Spyder بيئة تطوير متكاملة لـ Python، مجانية ومفتوحة المصدر ومتعددة المنصات، مصمّمة للمجتمع العلمي. وهي غالبًا مضمنة مع توزيعة Anaconda من Python، لكن يمكن تثبيتها بمفردها واستخدامها مع أي إصدار من Python. نوصي بتثبيت مستقل لضمان أقصى قدر من المرونة، ولتفادي أي تعارضات بين الحزم.
تدعم Spyder بيئات venv وconda بالكامل.
وتتضمن طرفية تفاعلية مدمجة IPython، ومُنقّحًا تفاعليًا، ودعمًا غنيًا لرسم المخططات واستكشاف البيانات داخل المحرر.
وتُوفَّر ميزات إكمال الكود والتدقيق الإضافية عبر kite.
وتُوفَّر التكاملات مع Jupyter Notebooks وأدوات الاختبار عبر إضافات طوّرها المجتمع.
ويمكنك أيضًا كتابة إضافاتك الخاصة باستخدام Spyder API.
Spyder الأسئلة الشائعة
ضبط إصدارات Python/البيئات الافتراضية في Spyder
إعداد Spyder لتشغيل اختبارات unittest وpytest عبر spyder unittest plugin
المزيد من إضافات Spyder
Emacs محرر نصوص مجاني ومفتوح المصدر وقابل للتخصيص بدرجة عالية، مكتوب بـ Lisp. ويتوفر دليل ممتاز للتثبيت والإعداد على Real Python.
Vim نسخة مجانية و"محسّنة" من محرر النصوص vi القياسي في Unix.
وهو متاح على مجموعة واسعة من أنظمة التشغيل وتوزيعات Linux/Unix.
ويتوفر دليل ممتاز للتثبيت والإعداد على Real Python، كما تتوفر أوراق غش مفيدة على vimsheet وglump وrtorr.
حتى إذا قرّرت أن تحرير كود Python في vim ليس مناسبًا لك، يُوصى بأن تتعرّف على مجموعة أساسية من الأوامر.
غالبًا ما يكون vim أو vi محرر النصوص "الأساسي" أو "الافتراضي" في توزيعات Linux وUnix، وهو المحرر الافتراضي لرسائل git commit (من بين أمور أخرى) على تلك الأنظمة.
من المرجّح أن تجد نفسك على نظام *nix بحاجة إلى تحرير ملف إعدادات مع توفّر vi فقط، لذا فإن معرفة كيفية الخروج من vim (على أقل تقدير) دفاع جيد عن النفس.
Spacemacs (مستودع github) توزيعة مجانية من Emacs يقودها المجتمع وتجمع بين وظائف Emacs وVim.
Sublime Text محرر نصوص مدفوع للبرمجة، من إنتاج Sublime HQ Pty Ltd. وهو مشابه لـ VS Code وAtom، مع العديد من الحزم والإضافات للتخصيص. يمكنك أيضًا تطوير إضافات خاصة بك للمحرر باستخدام Python.