Что, если у конечного пользователя не было необходимой библиотеки?

Мой проект 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 или двоичного файла:

Современные инструменты для создания + развертывания/публикации пакета включают в себя:

  1. pipenv: делает пакет и заменители requirements.txt (рекомендованный PyPA)
    • разработка: > pipenv install <dependency>, > pipenv install
    • опубликовать: > pipenv -e. + twine
  2. poetry: делает пакет и публикует в PyPI
    • разработать > poetry add <dependency>, > poetry install
    • опубликовать: > poetry publish
  3. flit: делает пакет и публикует в PyPI
    • разработать: > flit install
    • опубликовать: > flit publish

Первые два варианта имеют функции для создания чистых виртуальных сред и безопасной установки зависимостей с помощью файлов блокировки. Я бы посоветовал изучить эти новые варианты позже, так как они устраняют многие проблемы с упаковкой, устраняя setup.py и setuptools.


пользователь

Цель - получить пакет и установить его с зависимостями

Традиционные способы

Приложения имеют различные методы развертывания, например, загрузка вашего приложения на хостинг, например, heroku, DigitalOcean и т.д. Пользователь может косвенно взаимодействовать с вашим приложением через веб-сайт, интерфейс командной строки или более.

Библиотеки часто загружаются в PyPI. Отсюда пользователь обычно может установить пакет, используя pip независимо от того, как он сделан:

  • > pip install <package> (рекомендуется)
  • > pip install <packatge> -r requirements (явные, необязательные)

Эти вызовы командной строки будут извлекать дистрибутив из PyPI, устанавливать пакет и указанные зависимости.

Современные способы

Вот несколько альтернатив для pip:

  1. pipx: "безопасно" устанавливать пакеты в изолированных средах
    • > pipx install <package>

Смотрите также