Как загрузить универсальное колесо Python для Python 2 и 3?


У меня есть пакет на PyPi, и при подготовке нового релиза я строю исходный дистрибутив, строю колесо и загружаю, все с setuptools.

Однако я обнаружил, что он загружает только колесо для версии Python, используемой в команде upload (python и python3).

Вот шаги, которые я предпринимаю:

python3 setup.py sdist
python3 setup.py bdist_wheel --universal
python3 setup.py sdist bdist_wheel upload

Согласно руководству пользователя по упаковке Python :

"универсальные колеса" - это колеса, которые являются чистыми python (т. е. не содержат компиляции расширения) и поддерживают Python 2 и 3

Так что это кажется мне правильным.

После шага сборки колеса я проверяю, что колесо построено и имеет формат имени файла PACKAGE-VERSION-py2.py3-none-any.whl в dist, но когда я запускаю загрузку с python3 setup.py sdist bdist_wheel upload, он создает PACKAGE-VERSION-py3-none-any.whl и загружает это.

Если я запускаю python setup.py sdist bdist_wheel upload, он делает то же самое и загружает Python 2-только один.

1 4

1 ответ:

Команда python3 setup.py sdist bdist_wheel upload создаетновое колесное распределение.

Вам нужно будет снова включить те же флаги в эту командную строку:

python3 setup.py sdist bdist_wheel --universal upload

Лучше использовать twine для управления загрузками; он будет использовать зашифрованное соединение (setuptools использует незашифрованное соединение и таким образом отправляет ваше имя пользователя и пароль в открытом виде), и это позволяет вам проверять и тестировать дистрибутив перед загрузкой:

python3 setup.py sdist
python3 setup.py bdist_wheel --universal
# test the distributions
twine upload dist/*

Шпагат в настоящее время также является единственным инструментом, который устанавливает метаданные 'py versions' для PyPI правильно для универсальных колес .