Как загрузить универсальное колесо 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 ответ:
Команда
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 правильно для универсальных колес .