Ответ 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