Курс упаковки Python
Last updated
Was this helpful?
Last updated
Was this helpful?
Оригинал статьи Martin Thoma от 8-02-2020.
Среда Python устарела. Разработка Python началась до появления Интернета. Естественно, такая выращенная среда представляет собой месиво:
В этом курсе вы узнаете подробности о упаковке Python и о том, как связаны все инструменты.
Библиотека - должна быть включена в другой код. Она никогда не будет выполнена напрямую. У нее НЕТ точки входа.
Приложение CLI - приложение командной строки должно выполняться в его собственной среде. Оно получает ввод через интерфейс командной строки, может обращаться к локальному хранилищу или делать веб-запросы. Оно может читать переменные среды. Его надо запустить, выполнить задачи и закончить. У него есть точка входа.
Приложение GUI - подобно приложениям командной строки, но с графическим интерфейсом вместо интерфейса командной строки.
Служба - подобно приложению командной строки, но никогда не завершается. Она просто работает в фоновом режиме.
Записные книжки - специальные скрипты, которые в основном используются для анализа данных.
Предположим, вы хотите разработать новый awesome_project. Затем вы создаете папку и делаете ее репозиторием git:
С помощью упомянутого шаблона cookiecutter форматирование в значительной степени уже обработано:
Шаблон cookiecutter устанавливает несколько полезных плагинов:
pytest-cov - Создает отчет о тестовом покрытии. Это поможет вам определить разделы, в которых ошибки не могут быть обнаружены модульным тестом.
pytest-black - Проверяет, был ли нанесен черный цвет.
pytest-flake8 - Еще один тест на форматирование.
pytest-mccabe - Убедитесь, что часть вашего кода не слишком сложна.
Вы также можете попробовать mutmut. Это может помочь вам определить, какие строки были проверены, но, возможно, недостаточно тщательно.
Чтобы запустить все ваши тесты, выполните tox.
Если вы разрабатываете библиотеку, вам нужна документация. Для других типов приложений не так много.
Если у вас есть описанная структура проекта, то упаковка не имеет большого значения.
Убедитесь, что на нем есть как минимум
setup.cfg
читается setuptools.setup ()
. Он может содержать много чего, но минимальный будет выглядеть так:
Создайте исходный файл дистрибутива:
Создайте раздачу wheel:
Для этого сначала настройте файл ~/.pypirc
:
Теперь вы можете загрузить созданные ранее дистрибутивы:
Не рекомендуется. Используйте setuptools.
Это был форк setuptools, который снова объединили. Используйте setuptools.
setuptools используется в setup.py
и дает вам множество команд:
Есть 3 распространенных формата:
Source distributions
Egg
Wheel
PIP - это сокращение от «PIP устанавливает Python». Используй это. Не используйте easy_install.
Команды PIP
packaging.python.org:
Conda
Прочие материалы по упаковке:
Как создать исполняемый файл Windows (.exe) из скрипта Python: для этого вам необходимо работать в системе Windows.
Мне нравится оболочка ZSH с плагином и в качестве редактора с множеством разных плагинов; я записал некоторые из Sublime Text.
Распространенной альтернативой ZSH является . Распространенными альтернативами Sublime Text являются и . Если вы хотите большего, .
Убедитесь, что у вас установлены , , и .
Чтобы гарантировать, что отказ жесткого диска действительно приведет к минимальным потерям в работе, и для обеспечения совместной работы, мы добавляем удаленный репозитарий. и - отличный выбор. После того, как вы создали там пустой репозиторий, добавьте его как удаленный локально:
Перед началом разработки рекомендуется убедиться, что у вас не возникнут проблемы из-за разных версий Python / пакетов. pipenv - мой любимый инструмент. На данный момент использование Python 3.8 является хорошей идеей ().
- Самоуверенный форматтер, который уважает PEP8 и реализует много
- Сортирует импорт
Единственное, чего не хватает, - это форматировщик стиля строки документации. Мне очень нравится .
Если вы хотите узнать больше о форматировании, я рекомендую прочитать мое .
Прежде чем приступить к тестированию приложения, вы должны решить, какую версию Python вы хотите поддерживать. Ориентация должна заключаться в том, какие версии CPython в настоящее время получают обновления безопасности (см. ).
У Python есть несколько фреймворков для тестирования. Используйте . Он чрезвычайно распространен, стабилен и очень прост в использовании.
Лучшими инструментами являются как генератор документации и как хостинговые платформы.
Если вы разрабатываете приложение, вам необходимо обязательно обновить свои зависимости в случае возникновения уязвимостей. Пакет bandit и сервисы / могут помочь вам обнаружить такие случаи.
Хорошая практика - сделать доступным [module].__version__
. Конечно, она должна быть такой же, как и версия, которую вы видите через pip freeze
. И тогда было бы неплохо, если бы git commit
имел .
Конечно, все это можно сделать вручную. Если вам нужен инструмент, довольно широко распространен. Однако это не поддерживается. Поэтому некоторые люди используют . Я не уверен, что буду использовать это.
После создания загрузите его в PyPI с помощью .
Также существует python setup.py upload. Некоторое время он не использовал https. Хотя это изменилось, стандартом де-факто по-прежнему является twine. По этим .
Egg устарел и может быть заменен либо исходным кодом, либо wheel ().
Alexander VanTol:
Knewton: , 2015
Martin Thoma: , 2020
: сравнение лицензий
Martin Thoma: , 2019.