Что, если у конечного пользователя не было необходимой библиотеки?
Мой проект Python использует различные виды библиотек. Что такое протокол, если у конечного пользователя не было ни одного, ни одного из них?
Должно ли всплыть окно и сообщить ему/ей, какой пакет и версию загрузить в его/ее среде? Или я должен включить библиотеки в свой проект?
Какое правильное действие?
Ответы
Ответ 1
Каким бы ни был ваш проект, вы можете попробовать превратить его в пакет Python, который установит конечный пользователь. Как это работает
В корневой каталог вашего пакета вы должны включить setup.py. Вы можете включить в этот файл список требований/зависимостей (ключ install_requires
), которые будут установлены вместе с вашим пакетом при его установке конечным пользователем.
Конечный пользователь может затем использовать pip для установки вашего пакета, например
pip install YourPackage
и все зависимости, перечисленные в setup.py, будут установлены первыми.
Кроме того, как отметил @Devesh Kumar Singh в своем комментарии, вы также можете включить файл require.txt. Затем пользователь может установить с помощью этого файла
pip install -r requirements.txt YourPackage
Смотрите это руководство по созданию пакета Python, документации по setuptools
Ответ 2
Чтобы показать другим пользователям, какие библиотеки нужны для вашего проекта, у вас есть несколько вариантов. Все опции - это какие-то файлы, которые говорят, какие библиотеки нужны для этого проекта.
Файлы, которые мне известны
Ответ 3
Другой вариант: вы можете использовать PyInstaller для замораживания (пакетов) приложений Python в автономные исполняемые файлы под Windows, GNU/Linux, Mac OS X, FreeBSD, Solaris и AIX.
PyInstaller Quickstart
Это сработало очень хорошо для меня. Действительно, вам не нужно беспокоиться о том, установлен ли у конечного пользователя Python.
Ответ 4
Вот где упаковка проекта питона в модуль поставляется удобные модули Мы включаем requirements.txt
файл, который содержит все требования модуля Python, необходимые для этой библиотеки питона, и устанавливает их автоматически, когда модуль установка.
Хорошим примером того, как настроить ваш модуль для распространения, является структурирование вашего проекта.
Ответ 5
Итак, вы сделали пакет. Теперь вы захотите поделиться этим. Что дальше?
разработчик
Цель - создать дистрибутив (также называемый "пакетом"), чтобы поделиться им
преамбула
Теперь вы упаковываете свою посылку и хотите ее раздать. Существует два основных вида пакетов:
- приложение: разверните источник на сервере, github, веб-сайте, например, CLI
- библиотека: публиковать исходный дистрибутив (sdist) или бинарный (например, wheel) обычно в PyPI через
twine
Традиционные способы
Несколько файлов могут быть включены в дистрибутив, но вот основные из них:
- источник: ваш код
-
setup.py
: укажите метаданные и зависимости, необходимые для создания sdist. -
requirements.txt
: список зависимостей
Современные способы
Используйте pyproject.toml
чтобы указать, какой инструмент использовать при создании вашего sdist или двоичного файла:
Современные инструменты для создания + развертывания/публикации пакета включают в себя:
-
pipenv
: делает пакет и заменители requirements.txt
(рекомендованный PyPA) - разработка:
> pipenv install <dependency>
, > pipenv install
- опубликовать:
> pipenv -e.
+ twine
-
poetry
: делает пакет и публикует в PyPI - разработать
> poetry add <dependency>
, > poetry install
- опубликовать:
> poetry publish
-
flit
: делает пакет и публикует в PyPI - разработать:
> flit install
- опубликовать:
> flit publish
Первые два варианта имеют функции для создания чистых виртуальных сред и безопасной установки зависимостей с помощью файлов блокировки. Я бы посоветовал изучить эти новые варианты позже, так как они устраняют многие проблемы с упаковкой, устраняя setup.py
и setuptools
.
пользователь
Цель - получить пакет и установить его с зависимостями
Традиционные способы
Приложения имеют различные методы развертывания, например, загрузка вашего приложения на хостинг, например, heroku, DigitalOcean и т.д. Пользователь может косвенно взаимодействовать с вашим приложением через веб-сайт, интерфейс командной строки или более.
Библиотеки часто загружаются в PyPI. Отсюда пользователь обычно может установить пакет, используя pip
независимо от того, как он сделан:
-
> pip install <package>
(рекомендуется) -
> pip install <packatge> -r requirements
(явные, необязательные)
Эти вызовы командной строки будут извлекать дистрибутив из PyPI, устанавливать пакет и указанные зависимости.
Современные способы
Вот несколько альтернатив для pip
:
-
pipx
: "безопасно" устанавливать пакеты в изолированных средах
Смотрите также
- Официальные документы по публикации пакетов от PyPA
- Учебник о том, как упаковать ваш код Python
- Интервью подкаста с Б. Кэнноном о
pyproject.toml
и современных упаковочных инструментах