Python Wheels на linux (как? И почему?)

Я знаю, что колеса - это двоичная версия модуля, загруженного в PyPI.

с pip install

  • В Windows: я загружаю и устанавливаю диски.
  • В Ubuntu: я должен получить исходное распределение пакета НО в в некоторых случаях Я получаю колеса.
  • В Fedora: Tricky Мне нужно установить с помощью dnf

Я попытался добавить колеса в мой пакет. Но я могу загружать только колеса для окон.

  • Почему некоторые пакеты предоставляют колеса для платформы Linux?
  • Это хорошо? Предоставление двоичных файлов вместо источника?
  • Почему я не могу предоставить колеса?

Примечание. Я немного разбираюсь в пакетах Fedora rpm. Меня сейчас интересуют колеса на Ubuntu.

Ответ 1

Почему некоторые пакеты предоставляют колеса для платформы Linux?

Почему они не должны, пока доступны дистрибутивы источников?:)

Ваш вопрос непонятен. Если вы имели в виду

Почему некоторые пакеты предоставляют платформенные диски для платформы Linux вместо платно-независимых?

а затем посмотрите этот вопрос и его ответы. Если нет, уточните свой вопрос.


В Ubuntu: я должен получить исходное распределение пакета, но в в некоторых случаях я получаю колеса.

Попробуйте использовать:

pip install --no-binary :all: somepackage

Это должно сделать pip загрузку исходного дистрибутива, если он существует в PyPI. Я не знаю, почему нет исходных пакетов для PyQt5 на PyPI, возможно потому, что они не устанавливаются с помощью pip и для компиляции нужна целая инструментальная подготовка.


Это нормально? Предоставление двоичных файлов вместо источника?

Это нормально, если вы предоставляете как двоичные файлы, так и источник. Я предлагаю вам это сделать.


Почему я не могу предоставить колеса?

Попробуйте python setup.py bdist_wheel. Вам нужно установить пакет wheel (на PyPI), чтобы он работал. Если ваш пакет поддерживает как Python 2, так и 3 и не содержит расширений C, добавьте параметр --universal, чтобы сделать " универсальное колесо".

Замените bdist_wheel на sdist, чтобы создать распределение источника. Он создаст архив в каталоге dist.

sdist создает архив формата по умолчанию для текущей платформы. Формат по умолчанию - это gziped tar файл (.tar.gz) в Unix и ZIP файл в Windows.

Вы можете указать столько форматов, сколько хотите, используя параметр --formats, например:

python setup.py sdist --formats=gztar,zip

чтобы создать gzipped tarball и zip файл

(Цитата из https://docs.python.org/3/distutils/sourcedist.html)


Более подробную информацию о упаковке и колесах можно найти здесь: https://packaging.python.org/distributing/#packaging-your-project