Я пытаюсь развернуть обернутый Cython модуль C ++ в PyPI как колесо. Цель состоит в том, чтобы заставить аппаратные модули I2C работать с Python на любом Raspberry Pi. Пока что я скомпилировал код, и я знаю, что он работает, если я просто скопирую скомпилированный модуль из Pi 3B с Buster в Pi Zero W с Stretch, но когда я разверну колесо на test.pypi.org из Buster и попытаюсь установить его на Stretch Я получаю:
Could not find a version that satisfies the requirement pyiArduinoI2Crelay (from versions: )
No matching distribution found for pyiArduinoI2Crelay
Если я просто переименую колесо с * _armv7l.whl на * _armv6l.whl
Модуль загружает и работает на Pi Zero. Но Pi 3B загружает предыдущую версию из PyPI (и я использовал - no-cache-dir и rm -r .cache / pip / )
Если я запускаю sdist и загружаю его, он жалуется на отсутствие установленного Cython после установки модуля, хотя я точно знаю, что он установлен, потому что это те же диски Pi, которые я скомпилировал ранее. (setup_requires и install_requires не работают)
Пока ничего из этого не помогло:
https://www.python.org/dev/peps/pep-0425/#platform-tag
https://packaging.python.org/guides/distributing-packages-using-setuptools/#platform-wheels
https://wheel.readthedocs.io/en/stable/user_guide.html#building-wheels
Подготовка пакета Cython на основе C для публикации на pypi
Вот ссылка на проект:
https://github.com/tremaru/pyiArduinoI2Crelay
Вот setup.py:
from setuptools import setup
from distutils.extension import Extension
from Cython.Build import cythonize
from Cython.Distutils import build_ext
def readme():
with open('README.md') as readme:
return readme.read()
setup(name='pyiArduinoI2Crelay',
version='1.6.4.dev8',
description='iarduino.ru module for Raspberry Pi',
long_description=readme(),
classifiers=[
'Programming Language :: Python :: 3',
],
url='http://github.com/tremaru/pyiArduinoI2Crelay',
author='iarduino.ru',
author_email='shop@iarduino.ru',
license='MIT',
package=['pyiArduinoI2Crelay'],
ext_modules = [Extension(
name="pyiArduinoI2Crelay",
sources=["pyiArduinoI2Crelay/pyiArduinoI2Crelay.cpp"])],
include_package_data=True,
python_requires='>=3',
setup_requires=['Cython'],
install_requires=['Cython'],
cmdclass = {
"build_ext": build_ext
}
)
Я хочу иметь возможность опубликовать одну версию модуля для всех малины. Итак, есть ли способ упаковать несколько .so на одно колесо? Или, может быть, какой-то тег manylinux1 для архитектуры arm?