|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
Возможно ли сделать универсальную либу расширения для питона?12.03.2018, 12:18. Показов 1620. Ответов 7
Метки нет (Все метки)
Товарищи.
Собираю питоновский модуль. В нем есть динамическая библиотека расширения. Соответственно, при ее компиляции я подключаю что-то типа "/usr/include/python3.5/" для апишных хеадеров. В зависимости от того, какие заголовки я подключу, я получаю модуль для определенной версии языка. Если версия интерпретатора и апи не совпадают, я получаю ошибку вроде: ImportError: Python version mismatch: module was compiled for Python 3.5, but the interpreter version is incompatible: 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:09:58) Есть ли возможность собрать либу с универсальным подмножеством апи(аби), чтобы все версии интерпретатора (в разумных пределах) ее переваривали?
0
|
|
| 12.03.2018, 12:18 | |
|
Ответы с готовыми решениями:
7
Как сделать по возможности максимально универсальную защиту от дурака для ввода целых положительных чисел? Как сделать библиотеку .cpython-39.so для питона Возможно ли редактировать расширение Chrome? Изменение стилей для текста расширения. |
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 12.03.2018, 19:08 | |
|
Mirmik, нет, нельзя, нужно собирать whl под все поддерживаемые версии интерпретатора.
Загляни на pypi, там практически для всех библиотек множество сборок, под разные версии python. https://pypi.python.org/pypi/numpy
0
|
|
|
|
||
| 12.03.2018, 19:43 | ||
|
P.S. Правда, я не на С\++ писал :-). Но не суть - работает же.
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 12.03.2018, 19:55 | |
|
Garry Galler, Ну речь то про плюсы + как я понял человек явно завязывается на api конкретной версии python.
P.S. У меня тоже есть проект в котором я юзаю so сделанный на go, он тоже по сути будет работать на любой версии python.
0
|
|
|
|
||
| 12.03.2018, 20:04 | ||
|
Я, конечно, не пишу сам на Python/C API (это чересчур мозголомно) - спец. библиотека сама конвертирует код из исходного языка (Nim) в синтаксис Python\C API, а mingw уже в конечный .pyd. Но получается, что в моем случае нет такой привязки - к конкретной версии исходных заголовочных файлов python... И почему так - я тоже пока не понимаю.
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 12.03.2018, 20:07 | ||
|
0
|
||
|
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
|
|
| 12.03.2018, 21:13 | |
|
Привязку создаёт pybind11 (которую использует TC); и выбрасывает исключение тоже она.
pybind11 во всю использует шаблоны и макросы, которые позволяют в с++ коде писать на питонячьем наречии (писать, допустим, f("positional", 1, **d1, **d2, **d3) или чего-нибудь с operator+= и т.д. Поскольку питонячьи версии в этом смысле могут быть не совместимы, привязка нужна.Впрочем, даже на С привязка тоже может понадобиться, API меняется потихоньку... PS О pybind11 я знаю только, то что он существует...
0
|
|
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
| 13.03.2018, 09:28 [ТС] | |
|
То есть, не используя pybind, так можно было бы сделать? Ценная информация. Ну да не суть. Спасибо за консультацию. Соберу колёса под все версии. Это будет простой скрипт на полчасика...
0
|
|
| 13.03.2018, 09:28 | |
|
Помогаю со студенческими работами здесь
8
Сделать универсальную программу
Как сделать скриншот браузером из расширения для chrome?
Сделать свое приложение программой по умолчанию для заданного расширения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|