Использование pip-tools для разрешения зависимостей
pip-tools – это инструмент разработки Python, который поможет вам создавать детерминированные и предсказуемые сборки. Лучше всего можно это понять на примере.
Допустим, вы клонируете проект для работы над новой функцией. В первый день вы создаете virtualenv и устанавливаете все зависимости (через requirements.txt ). К третьему дню вы закончили работу над функцией и готовы к выпуску. Однако за это время один из базовых пакетов изменился, и это привело к остановке во время сборки. Вы никогда не замечали этого, потому что у вас были разные зависимости локально. pip-tools решает эту проблему путем компиляции файла requirements.txt со всеми используемыми пакетами, включая базовые зависимости, закрепленными в файле.
У приложений есть зависимости для запуска, а также зависимости для разработки. Лучше использовать их оттельно requirements.in и requirements-dev.in . Это сохраняет скомпилированные зависимости отдельно друг от друга.
Что такое Python/Питон?
django
pip-tools pytest pytest-django
Затем можно настроить Makefile для ускорения разработки.
Затем можно сделать тест make test , просто чтобы убедиться, что все работает.
Я хочу выделить одну из моих любимых функций pip-tools , а именно то, что она показывает, откуда появились зависимости в файлах requirements.txt .
django==2.1.15 # via # -c requirements.txt # django-debug-toolbar
Источник: uproger.com
3 полезных Python-инструмента для упрощения работы с кодом
Любой разработчик использует те или иные вспомогательные инструменты. Какие-то из них позволяют ускорить процесс, какие-то — избавиться от ошибок, сделать код более понятным.
Такие инструменты есть практически в любой сфере разработки.
Престон Бадир (Preston Badeer), Python-программист, поделился набором расширений которые, по его мнению, значительно упрощают и ускоряют кодинг. За 5 лет работы он перепробовал множество инструментов и выделил три наиболее полезных.
Kite: быстрый доступ к документации и автозаполнение на основе ИИ
У большинства IDE есть встроенная функция автозаполнения. Примерно так выглядит процесс работы с ними.
Эти инструменты используют внутреннюю документацию для автоматической подстановки параметров и имен функций. Но что если бы существовал инструмент, который способен помогать не только с именами функций, но и с часто используемыми кусками кода? А еще анализировал данные репозиториев GitHub и предлагал нужные подсказки. Такой инструмент есть. Kite умеет многое, но большинство важных функций можно разделить на три группы.
Smart-подсказки на основе ИИ
Kite изучает кодовую базу, запоминает название переменных, которые часто использует разработчик, имена параметров из интернета и документацию, чтобы выдавать контекстные рекомендации, например:
Пробуем Python Tools for Visual Studio (PTVS) и Python в Visual Studio Code.
В примере показано, как Kite предсказывает какие переменные вы будете использовать в зависимости от контекста кода. Вот еще пример работы подсказок:
Ваш код остается с вами на локальном ПК
Kite создан для локальной работы и не отправляет код в облако. Скорость работы подсказок достаточно высокая. Это важно для тех, у кого медленный интернет или работа связана с закрытым/проприетарным кодом.
Я работаю с этим инструментом несколько лет, и он становится только лучше. Опробовать его можно прямо сейчас.
Улучшаем код с Mypy
Python — динамически типизированный язык, что позволяет в любое время сделать любую переменную с любым типом данных. Одна и та же переменная может быть как строкой, так и целым числом или иным типом данных в зависимости от последнего присвоенного значения. Это ускоряет процесс написания кода, когда разработчику не нужно каждый раз вручную назначать тип данных для переменных:
# These two variable types are declared the exact same way # Python figures out the data type on it’s own, dynamically # string var_name = «string here» # integer var_name = 1234
А вот пример языка со статической типизацией, где каждой переменной задается конкретный тип данных, чего необходимо придерживаться в логике:
# Many languages require the data type to be declared too # string str var_name = «string here» # integer int var_name = 1234
В динамическом подходе есть и минусы:
- К концу процесса разработки повышается риск столкнуться с ошибками, так что придется переписывать какие-то части кода.
- Из-за постоянного вычисления типов код работает медленнее.
- Из-за динамической типизации код становится небезопасным, так как у функции на входе и выходе могут быть разные типы данных у одной и той же переменной.
- Читать динамический код сложнее, поскольку другой разработчик не может быть на 100% уверен в том, что объявленная ранее переменная не изменит тип.
Бесплатный инструмент Mypy внедряет статическую типизацию в код. Он позволяет находить ошибки несоответствия типов в коде. Если обнаружено несоответствие значение переменной присвоенному типу, выводится ошибка.
# Declaring a function using normal dynamic typing, without mypy def iter_primes(): # code here # Declaring the same function with mypy static typing from typing import Iterator def iter_primes() -> Iterator[int]: # code here
Это самый простой пример из целого списка. Если вам нужно больше информации, переходите по ссылке. Кроме того, в документации Mypy есть обширный FAQ.
Быстрый поиск ошибок и написание простых функций с SonarLint
У большинства IDE есть линтеры, статические анализаторы ошибок. Линтер еще до запуска кода может найти ошибку. Это считается статистическим анализом кода.
Но есть еще и динамический анализ, который в фоновом режиме запускает/компилирует код, проверяя правильность его работы. И если что-то идет не так, сообщает о возможной ошибке. Как раз по такому принципу работает бесплатный проект SonarLint.
Закомментированный или неиспользуемый код
Каюсь, бывает, что я оставляю операторы вывода, закомментированный код и неиспользуемые функции по всей кодовой базе. SonarLint предупреждает об этих проблемах, показывая, где что находится. Без SonarLint поиск проблем и отладка может занять многие часы.
Проблемы с безопасностью
У SonarLint есть большая обновляемая база данных с перечнем уязвимостей, которая позволяет плагину вовремя предупреждать разработчика о найденных в коде проблемах.
Читаемость кода
SonarLint предупреждает о чрезмерном усложнении кода, объясняя суть проблемы. Это может быть, например, слишком большая вложенность операторов if.
В качестве вывода
Небольшое резюме, чтобы не забыть описанные в статье инструменты в:
- Пишите код быстрее и гуглите меньше с Kite Copilot и Editor Plugin.
- Сделайте код стабильным с Mypy Python Module.
- Находите ошибки быстрее и пишите читаемый код с SonarLint Editor Plugin.
А какие полезные инструменты для работы с Python используете вы?
Эта статья является переводом.
Оригинальный текст:
3 Insane Secret Weapons for Python by Preston Badeer.
Источник: selectel.ru
pytools 2022.1.13
Pytools is a big bag of things that are “missing” from the Python standard library. This is mainly a dependency of my other software packages, and is probably of little interest to you unless you use those. If you’re curious nonetheless, here’s what’s on offer:
- A ton of small tool functions such as len_iterable , argmin , tuple generation, permutation generation, ASCII table pretty printing, GvR’s monkeypatch_xxx() hack, the elusive flatten , and much more.
- A time-series logging module, pytools.log .
- Batch job submission, pytools.batchjob .
- A lexer, pytools.lex .
- Documentation
- Github
- pytools.log has been spun out into a separate project, logpyle.
Подробности проекта
Ссылки проекта
Статистика
Метаданные
Лицензия: MIT License (MIT)
Требует: Python ~=3.8
Сопровождающие
Классификаторы
- Development Status
- 4 — Beta
- Developers
- Other Audience
- Science/Research
- OSI Approved :: MIT License
- English
- Python
- Python :: 3
- Scientific/Engineering
- Scientific/Engineering :: Information Analysis
- Scientific/Engineering :: Mathematics
- Scientific/Engineering :: Visualization
- Software Development :: Libraries
- Utilities
Источник: pypi.org
7 редакторов кода и IDE для Python
Писать простые программы на Python можно и в интегрированной среде, установленной по умолчанию, но со временем вам понадобятся более мощные и удобные инструменты.
Рассказываем о редакторах кода и IDE для комфортной работы с Python.
Редакторы кода или IDE — что выбрать
Редакторы кода — это программы для обработки кода с дополнительными функциями. Среди них — форматирование кода, автодополнение, подсветка синтаксиса.
У IDE (интегрированной среды разработки) функционал шире, чем у редакторов, но требует больших мощностей системы. Среда разработки Python обычно состоит из редактора кода, отладчика и компилятора. Есть IDE только для Python, но большинство работает с несколькими языками программирования.
Редакторы кода лучше подходят для создания небольших программ, а IDE — для работы с масштабными проектами.
Интегрированные среды
Thonny часто рекомендуют как среду разработки Python для новичков. Он доступен на Windows, macOS и Linux. Среди его возможностей — отладка кода, функциональная подсветка синтаксических элементов и совпадающих имен. Также в Thonny есть ассистент с визуализацией ошибок, а приложение можно открыть в нескольких окнах.
С 2017 года Thonny включен в операционную систему Raspberry Pi OS.
Стоимость: бесплатно.
Как основной редактор Python его используют 33% программистов. Преимущество IDE — встроенный терминал для запуска кода во время работы. PyCharm может использоваться для веб-разработки благодаря интеграции JavaScript, HTML и CSS. Также он поддерживает фреймворки Python (Django) или библиотек, которые используют в научных исследованиях и визуализации (NumPy, Anaconda, Metplotlib).
PyCharm доступен для Windows, macOS и Linux.
Стоимость: PyCharm Community — бесплатно. PyCharm Professional — $89 в год.
Эта интегрированная среда разработки создана Microsoft. Она доступна для Windows и macOS.
Среди преимуществ — редактор форм для графических интерфейсов, дизайнер схем баз данных. К IDE устанавливаются плагины и расширения. С Python IDE работает через расширение Python Tools for Visual Studio. Программа существует в трех версиях: Visual Studio Community, Professional и Enterprise. Первая версия распространяется бесплатно. В двух остальных больше инструментов для кроссплатформенной разработки.
Например, доступен симулятор iOS для Windows или совместное использование кода в Android и iOS.
Стоимость: Visual Studio Community — бесплатно.
Версия Professional — $45 в месяц, Enterprise — $250 в месяц.
статьи по теме:
Обзор библиотеки Pillow.
Дата-сайентисты из Parimatch Tech — о рекомендательной системе, создании моделей и развитии data science.
IDE с открытым кодом, которая разработана для специалистов по data science. Входит в дистрибутив Anaconda, а также поддерживает другие библиотеки для научной аналитики — SciPy, Matplotlib, NumPy. Кроме стандартных функций IDE (редактирование кода, отладка, рефакторинг), в Spyder есть проводник переменных. С его помощью можно узнать значения переменных в таблице внутри IDE. Также в Spyder есть режим двух окон, который разрешает одновременно прописывать код и видеть изменения.
Стоимость: бесплатно.
курсы по теме:
Редакторы кода
Это текстовый редактор с открытым кодом. Он разработан в Microsoft на базе фреймворка Electron. Приложение поддерживает практически все языки программирования и интеграцию с Git и GitHub. В редакторе есть библиотека элементов кода. Также можно добавлять в память снипетты — собственные фрагменты кода.
Visual Studio Code поддерживает одновременную работу с несколькими проектами.
Стоимость: бесплатно.
Редактор кода Atom тоже построен на базе Electron, но был запущен раньше, чем Visual Studio Code. Среди возможностей обоих редакторов — добавление плагинов, расширений и тем, которых у обеих программ больше 10 тыс. В Visual Studio Code контролируемый базовый набор функций, а плагины добавляют программе поверхностный функционал.
В случае Atom’а плагины стоят в основе программы, что позволяет делать персонализированную настройку. Atom поддерживает кроссплатформенное редактирование. Также есть возможность разделить окно программы для отдельного отображения кода и файлов.
Стоимость: бесплатно.
Sublime Text — редактор кода, который интегрирован с Python и позволяет устанавливать разные версии для проектов. Sublime можно индивидуализировать с помощью пользовательских пакетов. Они добавляются без перезагрузки программы. Редактор отображает одновременно до 4 файлов, а также имеет функцию автосохранения и дополнения кода. Sublime Text быстро прогружает файлы, но у программы нет бесплатной версии.
Стоимость: $80.
Источник: robotdreams.cc
Выбираем среду разработки для Python
Писать на Python, применяя для этого IDLE либо Python Shell, достаточно удобно. Первый инструмент создан с помощью библиотеки Tkinter и представляет собой не только интегрированную среду разработки, но и средство обучения (Integrated Development and Learning Environment). Что касается Python Shell, то этот инструмент тоже достаточно популярен и по сути мало чем отличается от обычного Python за исключением одной детали: выражения внутри grave accent символов (`) не являются eval, так как обозначают выполнение команды в шелле. К примеру:
`ls -l`
Здесь ls –l выполнится как shell-команда. И мы можем написать код без (`) в конце строки, что тоже будет корректным синтаксисом:
`ls -l
А ещё есть возможность выполнять несколько команд одновременно на различных строках:
` echo test > test.txt cat test.txt `
Или выполнять команды, которые занимают несколько строк:
`echo This is a very long line
Всё это круто, но в нашей статье речь пойдёт не о Python Shell. А о том, что писать на IDLE или Python Shell удобно лишь в тех случаях, когда речь идёт о простых вещах. Но если размер проекта растёт, программирование превращается в мучение. И здесь не обойтись без хорошего редактора кода либо IDE.
Немножко теории
Как известно, IDE — интегрированная среда разработки и полноценная система программных средств, специально предназначенных для создания софта. Здесь есть и подсветка синтаксиса, и автодополнение, и инструменты для сборки, выполнения и отладки. Как правило, поддерживается несколько языков программирования.
Что касается редакторов кода — то это текстовые редакторы с подсветкой и возможностями форматирования. Однако хорошие редакторы могут выполнять код и имеют встроенный отладчик, а лучшие из них взаимодействуют с системами управления версиями.
Да, редактор имеет меньшую функциональность, чем IDE, зато он, как правило, легковеснее и быстрее.
После краткого лирического отступления давайте посмотрим, что сегодня доступно для тех, кто программирует на Python.
Редакторы для Python
1. Sublime Text
Sublime Text написан инженером из Google, который мечтал о лучшем текстовом редакторе. Популярный инструмент, доступный на всех платформах и поддерживающий редактирование Python-кода. При этом богатый набор пакетов расширяет возможности редактирования и синтаксиса.
Плюсы — большое комьюнити, хорошая поддержка, простота, быстрая скорость работы. Минусы — Sublime Text небесплатен, а установка расширений иногда превращается в тот ещё квест. Отладка и запуск кода не поддерживаются.
2. Atom
Этот доступный на всех платформах редактор написан с помощью фреймворка Electron и средствами HTML, CSS и JavaScript. Он имеет множество расширений, включая поддержку Python, устанавливаемую прямо в Atom.
Плюсы — быстро и легко скачивается, без проблем загружается, доступен на всех платформах. Минусы — функции сборки и отладки добавляются посредством расширений. Так как Atom написан с использованием Electron, он работает не как нативное приложение, а как JavaScript-процесс.
3. GNU Emacs
GNU Emacs имеет множество поклонников и существует почти так же долго, как и UNIX.
В той или иной форме доступен бесплатно на каждой платформе. Для кастомизации использует язык Lisp. Само собой разумеется, скрипты кастомизации найдутся и для Python.
Плюсы — очевидны для тех, кто знаком с Emacs, использует Emacs и любит Emacs. А также для тех, для кого Lisp — второй язык, и с ним вы способны почти на всё. Минусы — процесс кастомизации подразумевает написание Lisp-кода в разные скрипты. Если скопипастить нечего, то придётся изучать Lisp.
4. Vi/Vim
VI и VIM — это модальные редакторы, отделяющие просмотр файла от его редактирования. По умолчанию доступны на почти каждой UNIX-системе. В VIM есть всё, что и в VI, но добавлен ряд усовершенствований, например, доступны расширения. Для решения Python-задач используют VIMScripts.
Плюсы — очевидны для тех, кто знаком с VI, не боится VIMScripts и хорошо знает, как их подчинить своей воле. Минусы — по сути, такие же, как и в случае с Emacs: если вы не умеете писать скрипты или не хотите их искать, а также не в курсе, как работает модальный редактор, то VI не для вас.
5. Visual Studio Code
Visual Studio Code не стоит путать с Visual Studio, так как это полнофункциональный редактор, который доступен на Linux, Windows и Mac OS X. А ещё это расширяемый open-sourcе-инструмент, настраиваемый под любую задачу. Построен, как и Atom, на Electron и имеет, соответственно, те же плюсы и минусы.
Чтобы добавить поддержку Python, выполните поиск по запросу «Python» в Marketplace. Далее нужно нажать «Install» и сделать перезапуск, если потребуется. VS Code определит установленные библиотеки и интерпретатор Python автоматически.
Плюсы — доступность на всех платформах, большая функциональность, исходники есть в открытом доступе.
Минусы — работает не как нативное приложение, а как JavaScript-процесс. Кроме того, есть люди, которым пользоваться продуктами Microsoft не позволяет религия.
IDE, поддерживающие Python
1. Eclipse + PyDev
Вряд ли вы не слышали про Eclipse. Это open-source IDE, предназначенная для разработки на Java. Среда доступна на Linux, Windows и OS X.
Если нужна интерактивная консоль Python, используют расширение PyDev. Оно устанавливается очень просто: — запускаем Eclipse; — выбираем Help → Eclipse Marketplace; — находим PyDev; — нажимаем кнопку «Install».
Плюсы — возможность отладки и автодополнения кода, лёгкая установка. Если вы опытный пользователь среды разработки Eclipse — это ваш выбор. Минусы — для полноценного использования нужен опыт. Если вы новичок в Python, эта среда разработки может показаться достаточно сложной.
2. Visual Studio
Полнофункциональная IDE от Microsoft, во многом сопоставимая с Eclipse. Доступна на Windows и Mac OS, есть и в бесплатном, и в платном вариантах, имеет свой набор расширений. Одно из них — это Python-расширение под названием Python Tools for Visual Studio. Позволяет писать на Python и включает в себя отладку, автодополнение (IntelliSense), другие инструменты.
Плюсы — лёгкая установка PTVS, прекрасный выбор, если вы знакомы с Visual Studio. Минусы — для одного лишь Python среды разработки Visual Studio как-то многовато. Кроме того, нет версии для Linux.
IDE, разработанные специально для Python
1. PyCharm
Одна из лучших полнофункциональных сред разработки, сделанных конкретно для Python. Есть и бесплатный, и платный варианты. IDE доступна на Windows, Mac OS X, Linux.
PyCharm поддерживает Python-разработку напрямую — достаточно открыть новый файл и начать писать код. Есть возможность запускать и отлаживать код из PyCharm, присутствует поддержка системы управления версиями.
Плюсы — большое комьюнити, поддержка всего и вся, работа «из коробки», запуск, редактирование, отладка. Минусы — PyCharm может загружаться довольно медленно, а настройки по умолчанию обычно требуют корректировки.
2. Spyder
Open-source среда разработки для Python, оптимизированная под data science. Поставляется в наборе с менеджером пакетов Anaconda.
Основная целевая аудитория — data scientist’ы, использующие Python. Например, Spyder прекрасно работает с такими библиотеками, как SciPy, Matplotlib и NumPy.
А ещё инструмент обладает широкой функциональностью, которая присуща всем стандартным средам разработки: редактирование, подсветка синтаксиса, автодополнение кода и даже встроенный обозреватель документации.
Отличительная особенность — наличие проводника переменных. С его помощью можно увидеть значения переменных в виде таблицы непосредственно внутри IDE. Кроме того, прекрасно работает интеграция с IPython/Jupyter.
Про Spyder говорят, что это инструмент более «приземлённый», если сравнивать с другими IDE. Однако Spyder чаще рассматривают в качестве средства решения определённой задачи, а не в качестве основной среды разработки.
Плюсы — бесплатность, доступность на Windows, Linux, macOS. Если вы data scientist, использующий Anaconda, — это ваш выбор. Минусы — недостаточная функциональность для повседневной работы с точки зрения более опытных разработчиков.
3. Thonny
Среда разработки для новичков. Написана и поддерживается Институтом информатики Тартуского университета (Эстония). Доступна на всех основных платформах.
Tonny устанавливается с версией Python, которая идёт в комплекте, а значит, что-нибудь ещё устанавливать не потребуется. Но если вы продвинутый пользователь, можете эту настройку изменить, чтобы IDE нашла уже установленные библиотеки.
Плюсы — очевидны для начинающих Python-программистов, которые рвутся в бой и подбирают IDE. Минусы — недостаточно функциональности для продвинутых пользователей. Так как IDE достаточно новая, могут возникнуть проблемы, а ответы на вопросы вы вряд ли найдёте в сети.
Что же выбрать?
Решение, разумеется, за вами, но пару рекомендаций мы всё же дадим: 1. Вы начинающий питонист? Берите среду разработки с наименьшими возможностями кастомизации по принципу «Меньше препятствий — меньше проблем». 2. Вы уже использовали редакторы для решения каких-либо задач? Выбирайте редактор, вам будет проще. 3. У вас установлена IDE для другого языка?
Просто добавьте в неё Python!
Материал написан специально для OTUS на основании статьи «Python IDEs and Code Editors (Guide)».
Источник: otus.ru