Корисні інструменти, які допоможуть розробляти код Python для Exercism на власному компʼютері.
Це зібрання інструментів, популярних у нашій спільноті. Воно не претендує на роль припису чи вичерпного переліку. Ми вважаємо, що ці інструменти добре справляються зі своїм завданням, але, безперечно, є й інші хороші інструменти. Якщо є рекомендація щодо редактора, IDE, інструменту чи плагіна, додайте її до цього документа на 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 разом із залежностями проєкту чи бібліотеки. Це допомагає уникати помилок і несумісностей, спричинених оновленням бібліотеки для одного проєкту, яке «ламає» залежність в іншому.
Сьогодні використовують багато інструментів віртуальних середовищ і подібних до них, а також дедалі більше поширюється рух за використання вбудованих метаданих скриптів, dev-контейнерів чи docker замість віртуальних середовищ. Важливо спробувати різні стратегії й знайти ту, що відповідає стилю розробки та потребам проєкту. Не варто вважати, що описані тут стратегії підходять усім або що це єдині варіанти. Щоб отримати загальніший огляд інструментів, не згаданих тут, зазирнімо до цього допису в блозі Баса Нійголта і не втрачаймо цікавості.
Тут ми розглянемо три основні інструменти віртуальних середовищ: venv зі стандартної бібліотеки Python, сторонній conda env, що використовує менеджер пакунків conda і (зазвичай) дистрибутив Python Anaconda, та сторонній інструмент 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 - це форк популярних інструментів rbenv/ruby-build, адаптований для Python.
По суті, це набір скриптів і проміжних обгорток, які дають змогу задавати версії Python як глобально, так і для окремого користувача.
Він намагається дотримуватися уніксової традиції інструменту з єдиним призначенням, ненавʼязливого й такого, що добре робить одну справу.
pyenv і документацію pyenv можна знайти на GitHub.
Visual studio code (VS Code) - це безкоштовний редактор коду, створений Microsoft.
Він має чудову підтримку як віртуальних середовищ і середовищ conda, так і docker (через плагін docker), а також його можна розширювати багатьма різними плагінами для тестування, лінтингу, форматування і веброзробки.
Ідентифікатор розширення: ms-python.python

Розширення Python від Microsoft - це офіційне розширення Python для VS Code, яке ми дуже радимо встановити. Воно має широкий набір можливостей, зокрема керування середовищами, керування тестами, лінтинг і налагодження. Починаючи з останнього випуску, встановлення розширення MS Python також завантажить pylance (популярний пакунок для лінтингу й перевірки коду Python) і jupyter (для роботи з Jupyter Notebooks).
PyCharm - це IDE (інтегроване середовище розробки) від JetBrains.
Його створено спеціально для Python, і він популярний серед професіоналів .
Як і VS Code, його можна розширювати різними платними й безкоштовними плагінами, темами та форматувальниками.
Платна версія також підтримує розробку з Django, розробку з Docker і інтеграцію з базами даних.
unittest, тому треба мати pytest, встановлений у середовищі, яке використовуємо разом із PyCharm (див. документи про інтерпретатор і середовище вище), а потім вказати PyCharm на нього.coverage для pytest зламає налагоджувач PyCharm.
Докладніше дивіться в конфігурації запуску й налагодження: pytest.Spyder - це кросплатформне безкоштовне IDE з відкритим кодом для Python, створене для наукової спільноти. Його зазвичай включають до дистрибутива Python Anaconda, але його можна встановити окремо і використовувати з будь-якою версією Python. Радимо окреме встановлення, щоб забезпечити максимальну гнучкість і уникнути конфліктів пакетів.
Spyder повністю підтримує середовища venv і conda.
Він містить вбудований інтерактивний термінал IPython, інтерактивний налагоджувач і багату підтримку побудови графіків та дослідження даних у редакторі.
Додаткове автодоповнення коду й лінтинг забезпечує kite.
Інтеграцію з Jupyter Notebooks і інструментами тестування забезпечують плагіни, розроблені спільнотою.
Можна також писати власні плагіни, використовуючи API Spyder.
Часті запитання про Spyder
Налаштування версій і віртуальних середовищ Python у Spyder
Налаштування Spyder для запуску тестів unittest і pytest через плагін spyder unittest
Додаткові плагіни Spyder
Emacs - це безкоштовний текстовий редактор з відкритим кодом, який легко налаштовувати, написаний мовою Lisp. Чудовий посібник із встановлення й налаштування є на Real Python.
Vim - це безкоштовна та «покращена» версія стандартного текстового редактора Unix vi.
Він доступний для багатьох операційних систем і різновидів Linux/Unix.
Чудовий посібник із встановлення й налаштування є на Real Python, а зручні шпаргалки доступні на vimsheet, glump і rtorr.
Навіть якщо вирішимо, що редагування коду Python у vim не для нас, радимо ознайомитися з базовим набором команд.
vim або vi часто є «базовим» чи «типовим» текстовим редактором у дистрибутивах Linux і Unix, а також типовим редактором для повідомлень комітів git (серед іншого) у цих системах.
Цілком імовірно, що ми опинимося в *nix-системі й муситимемо відредагувати файл конфігурації, маючи під рукою лише vi, тож уміння вийти з vim (принаймні) стане непоганим самозахистом.
Spacemacs (репозиторій на github) - це безкоштовний дистрибутив Emacs, який розвиває спільнота і який поєднує функціональність Emacs і Vim.
Sublime text - це платний текстовий редактор для програмування від Sublime HQ Pty Ltd. Він схожий на VS Code і Atom і має багато пакунків і плагінів для персоналізації. Можна також розробляти власні плагіни для цього редактора мовою Python.