ابزارهای مفیدی که میتوانند در توسعهی کد Python برای Exercism روی دستگاه خودتان به شما کمک کنند.
این مجموعهای از ابزارهایی است که در جامعهی ما محبوباند. قصد ما تجویز کردن یا ادعای کامل بودن نیست. به نظر ما این ابزارها کارشان را خوب انجام میدهند، اما بیشک ابزارهای خوب دیگری هم وجود دارند. اگر پیشنهادی برای ویرایشگر، IDE، ابزار یا افزونه دارید، از شما میخواهیم آن را در همین سند در GitHub اضافه کنید.
پیش از آنکه شروع به کاوش کنید، مطمئن شوید که نسخهی تازهای از Python نصب شده باشد.
پلتفرم وب Exercism در حال حاضر از Python 3.10 - 3.13.5 (تمرینها و Testها) و Python 3.13.5 (ابزارها) پشتیبانی میکند.
اجراکنندهی Test آنلاین ما در حال حاضر از pytest 8.4.0 و pytest-subtests 0.14.2 استفاده میکند.
تحلیلگر آنلاین ما از pylint 4.0.4 استفاده میکند.
استفاده از نسخههای متفاوت Python، pytest یا pylint بهصورت محلی ممکن است نتایجی متفاوت از وبسایت به شما بدهد.
برای اطلاعات بیشتر، به نصب Python بهصورت محلی مراجعه کنید.
محیطهای مجازی Python جداسازی سبکی از زمان اجرا و بستهها فراهم میکنند. آنها میتوانند با گرد هم نگهداشتن بستههای Python که نصب میکنید درون پوشهی یک محیط مشخص، به سازماندهی پروژههایتان کمک کنند. محیطهای مختلف میتوانند نسخههای متفاوتی از زمان اجرای Python را همراه با وابستگیهای هر پروژه یا کتابخانه نگه دارند. این کار به پیشگیری از Bugها و ناسازگاریهایی کمک میکند که از ارتقای یک کتابخانه برای یک پروژه و «شکستن» یک وابستگی در پروژهای دیگر ناشی میشوند.
امروزه ابزارهای زیادی در قالب محیط مجازی و شبهمحیط مجازی به کار میروند و جنبشی رو به رشد وجود دارد که بهجای محیطهای مجازی از فرادادهی درونخطی اسکریپت، کانتینرهای توسعه یا docker استفاده کند. مهم است که راهبردهای مختلف را امتحان کنید و راهبردی را بیابید که با سبک توسعه و نیازهای پروژهی شما سازگار است. فرض نکنید که راهبردهای اینجا برای همه یکسان جواب میدهند یا تنها گزینههای شما هستند. برای مروری کلیتر بر ابزارهایی که اینجا پوشش داده نشدهاند، این نوشتهی وبلاگ از Bas Nijholt را ببینید و کنجکاو بمانید.
سه ابزار اصلی محیط مجازی را اینجا بررسی میکنیم: venv از کتابخانهی استاندارد Python، conda env از طرف سوم که از مدیر بستهی conda و (معمولاً) توزیع Anaconda Python استفاده میکند، و uv که جانشین pip + venv از طرف سوم است.
هر سه استفاده و/یا نصبشان نسبتاً ساده است.
بهعلاوه، PyEnv، Poetry و virtualenvwrapper ابزارهایی هستند که میتوانند به مدیریت چندین نسخه از Python و چندین محیط Python روی یک ماشین کمک کنند.
venv
برای ساخت محیط مجازی با venv، با cd به پوشهای بروید که میخواهید محیطهایتان را در آن نگه دارید.
این پوشه باید جدا از Code پروژهتان باشد و پوشهای که نمیخواهید آن را در کنترل نسخه ثبت کنید.
سپس فرمان 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 استفاده میکند.
با این حال، توصیه میشود بهجای افزودن conda به مسیر (path) خود، از اعلانهای cmd یا powershell مربوط به Anaconda استفاده کنید:
(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 تغییر داده شدهاند.
این ابزار در اصل مجموعهای از اسکریپتها و shimهاست که امکان تعیین نسخهی Python هم بهصورت سراسری و هم مخصوص هر کاربر را فراهم میکند.
میکوشد به سنت Unix پایبند بماند: ابزاری تکمنظوره و بیمزاحمت که یک کار را خوب انجام میدهد.
pyenv و مستندات pyenv را میتوانید در GitHub پیدا کنید.
Visual Studio Code (VS Code) یک ویرایشگر Code رایگان است که Microsoft ساخته است.
از هر دو محیط مجازی/conda و همچنین docker (از طریق افزونهی docker) پشتیبانی خوبی دارد و میتوان آن را با افزونههای گوناگون برای Test کردن، لینت کردن، قالببندی و توسعهی وب گسترش داد.
شناسهی افزونه: ms-python.python

افزونهی Python از Microsoft افزونهی رسمی Microsoft برای Python در VS Code است و نصب آن بهشدت توصیه میشود. این افزونه ویژگیهای گستردهای دارد، از جمله مدیریت محیط، مدیریت Test، لینت کردن و debug کردن. از آخرین نسخه به بعد، نصب افزونهی Python از Microsoft، pylance (بستهی محبوبی برای لینت کردن و اعتبارسنجی Code Python) و jupyter (برای کار با Jupyter Notebook) را هم دانلود میکند.
PyCharm یک IDE (محیط توسعهی یکپارچه) است که JetBrains آن را ساخته است.
این ابزار بهطور ویژه برای Python ساخته شده و میان حرفهایها محبوب است.
مانند VS Code، میتوان آن را با افزونهها، پوستهها و قالببندهای مختلف رایگان و غیررایگان گسترش داد.
نسخهی پولی آن هم از توسعهی Django، توسعهی Docker و یکپارچهسازی با پایگاه داده پشتیبانی میکند.
unittest استفاده میکند، پس باید pytest را در محیطی که با pycharm استفاده میکنید نصب کرده باشید (به سندهای مفسر و محیط در بالا نگاه کنید) و سپس pycharm را به آن اشاره دهید.coverage برای pytest، debugger مربوط به pycharm را از کار میاندازد.
برای اطلاعات بیشتر پیکربندی اجرا/debug: pytest را ببینید.Spyder یک IDE رایگان و متنباز و چندسکویی برای Python است که برای جامعهی علمی ساخته شده است. معمولاً همراه با توزیع Anaconda از Python عرضه میشود، اما میتوان آن را بهتنهایی نصب کرد و با هر نسخهای از Python به کار برد. ما نصب مستقل را توصیه میکنیم تا بیشترین انعطافپذیری تضمین شود و هیچ تعارضی میان بستهها پیش نیاید.
Spyder از محیطهای venv و conda بهطور کامل پشتیبانی میکند.
این ابزار شامل یک پایانهی تعاملی IPython، یک debugger تعاملی و پشتیبانی غنی برای رسم نمودار و کاوش داده درون ویرایشگر است.
تکمیل خودکار Code و لینت کردن بیشتر از طریق kite فراهم میشود.
یکپارچهسازی با Jupyter Notebook و ابزارهای Test از طریق افزونههایی که جامعه توسعه دادهاند فراهم میشود.
همچنین میتوانید با استفاده از API مربوط به Spyder، افزونههای خودتان را بنویسید.
پرسشهای متداول Spyder
تنظیم نسخهها/محیطهای مجازی Python در Spyder
راهاندازی Spyder برای اجرای Testهای unittest و pytest از طریق افزونهی unittest در Spyder
افزونههای بیشتر برای Spyder
Emacs یک ویرایشگر متن رایگان، متنباز و بهشدت قابلسفارشیسازی است که با Lisp نوشته شده است. یک راهنمای نصب و راهاندازی عالی در Real Python در دسترس است.
Vim نسخهی رایگان و «بهبودیافته»ی ویرایشگر متن استاندارد Unix یعنی vi است.
این ویرایشگر روی طیف گستردهای از سیستمهای عامل و توزیعهای Linux/Unix در دسترس است.
یک راهنمای نصب و راهاندازی عالی در Real Python در دسترس است و برگههای تقلب مفیدی در vimsheet، glump و rtorr موجود است.
حتی اگر تصمیم بگیرید که ویرایش Code Python در vim مناسب شما نیست، توصیه میشود با مجموعهای پایه از فرمانها آشنا شوید.
vim یا vi اغلب ویرایشگر متن «پایه» یا «پیشفرض» در توزیعهای Linux و Unix است و در آن سیستمها ویرایشگر پیشفرض برای پیامهای commit مربوط به git است (از جمله موارد دیگر).
احتمال زیادی دارد که روزی روی یک سیستم *nix باشید و بخواهید پروندهی پیکربندیای را ویرایش کنید که تنها vi در دسترس است؛ پس دانستن اینکه چگونه از vim خارج شویم (دستکم) دفاع شخصی خوبی است.
Spacemacs (مخزن GitHub) یک توزیع رایگان و جامعهمحور از Emacs است که کارکردهای Emacs و Vim را با هم ترکیب میکند.
Sublime text یک ویرایشگر متن پرداختی برای برنامهنویسی است که Sublime HQ Pty Ltd ساخته است. این ویرایشگر شبیه VS Code و Atom است و بستهها و افزونههای زیادی برای سفارشیسازی دارد. همچنین میتوانید با Python افزونههای خودتان را برای این ویرایشگر توسعه دهید.