Тег платформы Linux для модуля Python, созданного с помощью pybind11

Я использую pybind11 и собираю модуль python с помощью setuptools и cmake, как описано в pybind / cmake_example:

setup(
name='libraryname',
...
ext_modules=[CMakeExtension('libraryname')],
cmdclass=dict(build_ext=CMakeBuild),
)

Локально, используя python setup.py sdist build все хорошо, и я могу использовать и / или установить пакет из сгенерированных файлов.

Теперь я хочу загрузить пакет в PyPI.
Из другого пакета Python я знаю, как создать общую библиотеку Linux (см. Также Вот) манипулируя меткой платформы колеса:

class bdist_wheel(bdist_wheel_):
def finalize_options(self):
from sys import platform as _platform
platform_name = get_platform()
if _platform == "linux" or _platform == "linux2":
# Linux
platform_name = 'manylinux1_x86_64'

bdist_wheel_.finalize_options(self)
self.universal = True
self.plat_name_supplied = True
self.plat_name = platform_name

setup(
...
cmdclass = {'bdist_wheel': bdist_wheel},
)

Вопрос:

Как создать соответствующий тег платформы, когда нет bdist_wheel построено?
Должно ли это быть каким-то образом построено как колесо, а не как расширение (возможно, связано с этот вопрос на GH)?

Кроме того, как pybind11 определяет суффикс сгенерированных библиотек (на моем Linux это не просто .so но .cpython-35m-x86_64-linux-gnu.so)?

Следовать за:

  • Основная проблема в том, что я не могу обновить текущий пакет, собранный в Ubuntu, до PyPI: ValueError: Unknown distribution format: 'libraryname-0.8.0.cpython-35m-x86_64-linux-gnu.so'
  • Если тег платформы не может или не должен быть изменен: каков наилучший способ загрузки модуля pybind11 в PyPI на разных платформах?

1

Решение

Виноват!

Оказывается, путаница произошла из-за ошибки сборки, которая была у меня при первоначальной попытке запуска python setup.py sdist bdist_wheel,
Вручную строить с python setup.py build не был правильный подход для публикации пакета.

Заметка: имя .so файла должно быть установлено без -0.8.0 Идентификатор версии для того, чтобы Python мог выполнить импорт с колеса.

Подвести итоги:
Создание и публикация двоичных колес работает точно так же с pybind11, как, например, с. CPython и это должно работать очень хорошо, чтобы следовать pybind / cmake_example.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]