- Полезные инструменты Python
- Базовые инструменты
- Setuptools
- virtualenv
- Создание пакетов и их распространение
- distutils
- Pypiserver
- Poetry
- Pipenv
- Документация
- Sphinx
- autodoc
- Тестирование
- py.test
- Hypothesis
- Другие инструменты
- pyenv
- PyScaffold
- flake8
- Black
- distutils, setuptools, pip — Python: Настройка окружения
- distutils и setuptools
- Installing pip/setuptools/wheel with Linux Package Managers¶
- Fedora¶
- CentOS/RHEL¶
- linux-notes.org
- Установка pip/setuptools/wheel в Unix/Linux
- Установка pip/setuptools/wheel в Fedora
- Установка pip/setuptools/wheel в CentOS/RHEL
- Установка pip/setuptools/wheel в openSUSE
- Установка pip/setuptools/wheel в Debian/Ubuntu
- Установка pip/setuptools/wheel в Arch Linux
- Установка pip/setuptools/wheel в Mac OS X
- Установка pip/setuptools/wheel с исходного кода.
- Установка pip/wheel с исходного кода
- Установка setuptools с исходного кода
- Установка easy_install с исходного кода
- Использование PIP
- Добавить комментарий Отменить ответ
Полезные инструменты Python
Друзья, добрый вечер! У нас отличные новости, открыт набор в новую группу по курсу «Разработчик Python». Группа стартует уже в начале июля, а прямо сейчас, по устоявшейся традиции, мы делимся полезным переводом подготовленным для студентов данного курса.
Когда вы только начинаете учить Python, кто-то объясняет вам, что вы можете добавить свою папку с исходниками в переменную среды PYTHONPATH и тогда ваш код можно будет импортировать из других директорий. Очень часто объясняющий забывает сказать, что в большинстве случаев – это плохая идея. Некоторые люди узнают это в интернете, другие просто понимают на собственном опыте. Но слишком большое количество людей (особенно неопытные программисты), думают, что других альтернатив быть не может.
Эта статья в основном для них, поскольку даже если вы знаете, что существует альтернатива, не всегда бывает просто принять ее и начать использовать. Инструменты Python сбивают с толку, поскольку они представляют из себя большое количество программного обеспечения, построенного одно на основе другого, с большим количеством пересечений и проблем, возникающих из-за этого. Непросто понять, как эти инструменты правильно использовать в своем проекте.
По этой причине я решил написать эту статью и рассмотреть в ней самые популярные инструменты, разобраться когда и где они используются и какие задачи решают. Я попробую объяснить на пальцах как стоит применять каждый из этих инструментов. Если инструмент есть в этом списке, значит, вам, как питонисту, нужно хотя бы знать о его существовании. Я буду рассказывать лишь о тех инструментах, которые могут быть применены для любого проекта или рабочего процесса, и вам следует помнить о них, когда вы начинаете новый проект. Однако это не значит, что вам следует использовать все представленные инструменты в каждом своем проекте. Излишне перегружать проект инструментами, в некоторых случаях это может усложнить его поддержку.
Базовые инструменты
Setuptools
Setuptools – стандартный способ создавать пакеты в Python. Он работает где угодно и хорошо справляется со своей задачей.
Для чего: создание egg, zip или wheel файлов из исходников, определение метаданных для вашего проекта, совместная структурированная и стандартизированная работа над кодом.
Когда используется: Всегда, когда вы пишете код, который должен запускаться на чьей-либо другой машине.
Альтернативы: Poetry, Flit
virtualenv
Virtualenv – менеджер виртуальной среды. Такие изолированные среды представляют собой автономно установленный python с определенным набором предустановленных пакетов. Использование virtualenv означает, что вам не нужно устанавливать пакеты в python системы по умолчанию.
Для чего: разделение зависимостей, поддержка различных версий python одной системой, легкое перемещение зависимостей.
Когда используется: Вам нужно написать код, а для этого нужна версия python отличающаяся от вашей системной версии python по умолчанию.
Альтернативы: Docker или нечто подобное.
Pip – наиболее распространённый менеджер пакетов в python. Он позволяет устанавливать локальные или удаленные пакеты в вашу виртуальную среду или Python системы.
Для чего: установка и удаление пакетов, отслеживание версий пакетов, которые вы используете.
Когда используется: Всегда.
Альтернативы: Poetry, Conda
Создание пакетов и их распространение
Для более тщательного ознакомления у python.org есть отдельная страница: packaging.python.org
distutils
distutils – это предшественник setuptools. Последний активно использует функционал distutils, поэтому нередко приходится взаимодействовать именно с этим инструментом. Distutils – это не совсем тот инструмент, который вы должны иметь в своем арсенале, но вы должны знать, каким образом он вписывается в общую картину.
Pypi или Python Package Index — это большой репозиторий, в котором собраны все ваши самые любимые модули Python. Например, тот же самый pip берет билды пакетов именно оттуда.
Для чего: Для публикации вашего кода.
Когда используется: Когда существует пакет, который вы хотите показать сообществу.
Pypiserver
Pypiserver – это одна из реализаций Package Index API, используемая Pypi. Вы можете создать собственный репозиторий, например, для всей вашей компании и публиковать пакеты не делая публичных релизов.
Для чего: Создание собственных репозиториев внутри организации.
Когда используется: Когда вашему коду не нужна публичная огласка, но над ним нужен полный контроль.
Альтернативы: Warehouse (используется Pypi), djangopypi
Poetry
Poetry является альтернативной системой работы с пакетами, которая заменяет setuptools, pip и некоторые другие инструменты, построенные на их основе. Это попытка полностью пересмотреть то, как работает система пакетов в Python. На настоящее время poetry имеет множество положительных отзывов, но не является самым распространённым инструментом.
Для чего: обработка и распространение пакетов, управление зависимостями, предотвращение проблем с разрешением зависимостей.
Когда используется: Когда у вас намечается новый проект и вы не боитесь использовать узкоспециализированные инструменты.
Альтернативы: Pipenv
Pipenv
Pipenv, подобно Poetry, является инструментом для структурирования зависимостей и конфигурации проектов на Python более вменяемым способом. С помощью Pipfile он управляет зависимостями вашего проекта и обеспечивает согласованность и простоту использования.
Для чего: обработка и распространение пакетов, управление зависимостями.
Когда используется: вам нужен инструмент вроде Poetry, который вызовет меньше вопросов.
Альтернативы: Poetry.
Документация
Sphinx
Sphinx – инструмент для создания документации. Изначально он был создан для обработки документации Python, но стал инструментом общего пользования. Он является наиболее распространенным вариантом для проектов на Python.
Для чего: создание PDF-или HTML-документов с помощью языка разметки из reStructuredText источников.
Когда используется: Когда вашему проекту, API или коду требуется внешняя документация.
Альтернативы: Docutils, Doxygen
autodoc
autodoc — это фундаментальное расширение для Sphinx, которое позволяет создавать reStructuredText файлы из исходного кода на Python с подписями для каждого класса, функции, модуля и так далее.
Для чего: документирование вашего кода или API.
Когда используется: Фактически, каждый раз, когда вы используете Sphinx.
Альтернативы: autosummary
Тестирование
py.test
py.test – по моему мнению, является лучшим пакетом для тестирования на Python. У него множество функций, хотя не все из них раскрыты должным образом, поэтому некоторое время займет поиск всех возможностей, которые предоставляет py.test.
Для чего: тестирование вашего кода.
Когда используется: Всегда, когда вам лень тестировать вручную.
Альтернативы: unittest, nose
Hypothesis
Hypothesis – это инструмент для тестирования отдельных свойств. Короче говоря, он генерирует случайные сценарии тестирования в соответствии с вашими спецификациями, пока не найдет сценарий, при котором тест не проходит успешно. Потратьте некоторое время на изучение принципов, прежде чем начинать использовать этот инструмент.
Для чего: тестирование кода, в особенности обработки данных.
Когда используется: Когда нужно протестировать нетривиальную логику широким спектром входных значений (числа, строки, структурированные данные).
tox представляет из себя менеджер виртуальной среды для тестирования. Это значит, что вы сможете настроить его для выполнения тестов в чистых, настраиваемых виртуальных средах, чтобы гарантировать, что ваш код сможет работать в различных условиях.
Для чего: для кода, который должен запускаться в различных условиях и средах. Также полезен для CI.
Когда используется: Когда нужно, чтобы ваш код поддерживался различными версиями Python, запускался в различных средах и на разных операционных системах.
Альтернативы: bash scrips, CI pipelines
Другие инструменты
pyenv
pyenv – менеджер версий python. Он направлен на упрощение локального рабочего процесса разработчиков при работе с несколькими версиями.
Для чего: запуск различных проектов разными версиями Python.
Когда используется: Вам нужно работать с глобальными версиями Python и у вас их много.
Альтернативы: manual management, virtualenv, Poetry, Pipenv
PyScaffold
PyScaffold — это инструмент для инициализации структуры проекта стандартизированным способом и предоставления некоторых из перечисленных выше инструментов без необходимости настраивать их вручную. Очень гибкий.
Для чего: для загрузки проектов, работы с несколькими проектами с одинаковым инструментарием и структурой.
Когда используется: всегда (если вы знакомы с этим инструментом, но не пытайтесь впервые его использовать, когда вы спешите)
Альтернативы: python-project-template, Cookiecutter
flake8
flake8 – один из самых популярных линтеров для Python. Он запускает различные сценарии для проверки соответствия вашего кода требованиям руководства по стилю Python (PEP-8).
Для чего: проверка вашего проекта на хороший стиль написания кода.
Когда используется: каждый раз, когда ваш проект должен быть прочитан кем-то или вами же.
Альтернативы: pylint
Black
Black автоматически форматирует код. Это значит, что вместо того, чтобы просто проверить ваш код на соответствие стандартам, Black самостоятельно изменит его, чтобы он им соответствовал.
Для чего: автоматическое форматирование кода.
Когда используется: Когда у вас нет проблем с тем, чтобы отказаться от ручного управления вашим кодом.
Альтернативы: autopep8, yapf
Источник
distutils, setuptools, pip — Python: Настройка окружения
На прошлом уроке мы познакомились с пакетами и индексами, давайте же узнаем, как устанавливать пакеты из индекса! Для установки, обновления и удаления пакетов часто применяются так называемые пакетные менеджеры (или менеджеры пакетов). Один такой мы рассмотрим, но сначала немного поговорим о фундаменте системы пакетирования Python.
distutils и setuptools
В поставку Python входит distutils, пакет, отвечающий за создание дистрибутивов — архивов кода, которые могут быть распакованы в целевом окружении и установлены так, чтобы интерпретатор Python «увидел» распакованный код. При создании пакета программист создаёт в корневой директории будущего пакета файл setup.py в котором импортирует из модуля distutils функцию setup и вызывает её. Таким образом каждый пакет содержит в себе программу для управления собой!
Подробнее о том, как работает distutils, можно почитать в официальной документации к пакету, а мы сразу двинемся дальше. Дело в том, что пакет distutils появился довольно давно и сейчас сам по себе не очень удобен в использовании. Гораздо чаще используется надстройка над distutils, пакет setuptools.
Пакеты, собранные с помощью setuptools, уже умеют предоставлять metadata: описание, версию, и самое главное — собственные зависимости! Пакеты, которые не зависят ни от чего, кроме самого Python, настолько редки, что без setuptools — можно сказать, «жизни нет». Про этот пакет стоит знать и со временем нужно будет научиться его использовать (опять же, с помощью документации), но в рамках этого курса мы будем рассматривать более простой инструмент для создания пакетов и загрузки их в индекс — poetry, с которым мы познакомимся попозже.
Источник
Installing pip/setuptools/wheel with Linux Package Managers¶
This section covers how to install pip , setuptools , and wheel using Linux package managers.
If you’re using a Python that was downloaded from python.org, then this section does not apply. See the Requirements for Installing Packages section instead.
Note that it’s common for the versions of pip , setuptools , and wheel supported by a specific Linux Distribution to be outdated by the time it’s released to the public, and updates generally only occur for security reasons, not for feature updates. For certain Distributions, there are additional repositories that can be enabled to provide newer versions. The repositories we know about are explained below.
Also note that it’s somewhat common for Distributions to apply patches for the sake of security and normalization to their own standards. In some cases, this can lead to bugs or unexpected behaviors that vary from the original unpatched versions. When this is known, we will make note of it below.
Fedora¶
To learn more about Python in Fedora, please visit the official Fedora docs, Python Classroom or Fedora Loves Python.
CentOS/RHEL¶
CentOS and RHEL don’t offer pip or wheel in their core repositories, although setuptools is installed by default.
To install pip and wheel for the system Python, there are two options:
Enable the EPEL repository using these instructions. On EPEL 7, you can install pip and wheel like so:
Since EPEL only offers extra, non-conflicting packages, EPEL does not offer setuptools, since it’s in the core repository.
Enable the PyPA Copr Repo using these instructions 1. You can install pip and wheel like so:
To additionally upgrade setuptools, run:
To install pip, wheel, and setuptools, in a parallel, non-system environment (using yum) then there are two options:
Use the “Software Collections” feature to enable a parallel collection that includes pip, setuptools, and wheel.
Be aware that collections may not contain the most recent versions.
Enable the IUS repository and install one of the parallel-installable Pythons, along with pip, setuptools, and wheel, which are kept fairly up to date.
For example, for Python 3.4 on CentOS7/RHEL7:
Источник
linux-notes.org
В этой статье «Установка pip/setuptools/wheel в Unix/Linux» описывается, как установить pip, setuptools и wheel в Unix/Linux ОС.
Установка pip/setuptools/wheel в Unix/Linux
Приведу установку на различные Unix/Linux ОС.
Установка pip/setuptools/wheel в Fedora
Чтобы установить Python 2 на Fedora 21, используйте следующие команды.
Для начала обновим тулзы:
Чтобы установить Python 3 на Fedora 21, используйте следующие команды:
Чтобы установить Python 2 на Fedora 22, используйте следующие команды.
Для начала обновим тулзы:
Чтобы установить Python 3 на Fedora 22, используйте следующие команды:
Чтобы получить новые версии pip, setuptools и wheel для Python 2, вы можете включить PyPA Copr репозиторий:
И после чего, выполнить:
Установка pip/setuptools/wheel в CentOS/RHEL
Чтобы установить pip и wheel, существует два варианта:
1. Включите репозиторий EPEL, используя эти инструкции:
После чего, вы можете установить pip следующим образом:
На EPEL 7 (но не EPEL 6), вы можете установить wheel следующим образом:
2. Включите репозиторий PyPA Copr репозиторий:
После чего, вы можете установить pip следующим образом:
Чтобы обновить setuptools, запустите:
Чтобы установить Python 3.4 на CentOS7/RHEL7, используйте:
Установка pip/setuptools/wheel в openSUSE
Чтобы установить Python 2:
Чтобы установить Python 3:
Установка pip/setuptools/wheel в Debian/Ubuntu
Чтобы установить Python:
Чтобы установить Python 3:
Установка pip/setuptools/wheel в Arch Linux
Чтобы установить Python 2:
Чтобы установить Python 3:
Установка pip/setuptools/wheel в Mac OS X
Добавляем HOMEBREW на Mac OS X ( устанавливаем его):
После чего, можно приступать к установке:
Или, чтобы установить python 3:
Установка pip/setuptools/wheel с исходного кода.
И, чтобы получить самое новое ПО, НЕОБХОДИМО КОМПИЛИРОВАТЬ ЕГО!
Установка pip/wheel с исходного кода
Очень простая установка:
Установка setuptools с исходного кода
Смотрим где лежит нужный питон (у меня это 3.4):
И выполняем сборку:
ИЛИ, все в одной строке:
Установка easy_install с исходного кода
easy_install позволяет установить pip и его компоненты.
Смотрим где лежит нужный питон (у меня это 3.4):
И выполняем сборку:
Использование PIP
Поиск пакета Python с помощью команды pip:
Установка пакета с помощью команды pip:
- Установка по имени пакета:
- Установка по имени пакета (но, определенной версии):
- Установка пакета по URL:
Список пакетов Python, которые уже установлены в системе, можно проверить с помощью команды pip:
Показать информацию о пакете Python:
Вот полезное чтиво:
А на этом, у меня все. Тема «Установка pip/setuptools/wheel в Unix/Linux» завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник