Comments 12
UFO just landed and posted this here
А что тогда понимается под фактическим встраиванием? Чем этот подход по своей сути отличается от того, что предлагает стандартный механизм или Boost::Python? Питоновский код всё так же исполняется в интерпретаторе, просто вместо вот этого:
Думаю, отлаживать такой питоновский код становится не очень удобно из-за всей этой обвязки с импортом модуля расширения. В доке даже есть раздел об этом.
Хотя идея мне, вообще, нравится. Всё это, например, можно было бы использовать в приложении с плагинами.
Используя API CPython, вы должны были бы запустить интерпретатор и выполнить множество преобразований параметров и возвращаемого значения.используется обёртка в виде динамической библиотеки, в которой всё это под капотом.
Думаю, отлаживать такой питоновский код становится не очень удобно из-за всей этой обвязки с импортом модуля расширения. В доке даже есть раздел об этом.
Хотя идея мне, вообще, нравится. Всё это, например, можно было бы использовать в приложении с плагинами.
0
UFO just landed and posted this here
Если очень нужно, то допилить встраивание именно до такого варианта с помощью C’шного препроцессора и простого скрипта на том же Python, который будет вырезать код на Python во временный файл и запускать создание библиотеки, несложно. А вот сделать код, который создаёт такие библиотеки сложнее.
Хотя пока такой скрипт не приведён название всё же стоит изменить на «создание разделяемых библиотек на Python».
0
Есть примеры, где это может понадобиться? Обычно нужно обратное — пишется ядро на C или C++ и используется в Python-приложении.
+2
На вскидку, скриптование в игре. Да и вообще везде, где надо программировать логику без перекомпиляции.
+1
Мы использовали Python-плагины в некотором околонаучном софте, который был написан на C++. Система плагинов была разработана так, чтобы можно было писать плагины и на C++ и на Python. Это очень удобно для проверки и обкатки каких-то новых алгоритмов/концепций/методов, связанных с предметной областью. Сначала пишется прототип на Python, подключается в виде плагина, алгоритм отлаживается, дорабатывается. Когда всё готово, делается реализация на C++, и плагин на Python заменяется плагином на C++ с тем же интерфейсом.
+3
Какие ограничения по использованию питоновских модулей с помощью такого импорта?
0
Прошу уточнить вопросы технического плана:
1) gcc вместо Clang отаботает также, с теми же параметрами? Ни разу с Clang работать не приходилось.
2) Указано что *.dylib — динамическая библиотека, но в примере указан вариант с включением файла в конечный исполняемый файл. Поправьте, если это не так. Вопрос — это на самом деле динамическая библиотека, то что в Linux часто имеет шаблон libNamelibrary.so?
1) gcc вместо Clang отаботает также, с теми же параметрами? Ни разу с Clang работать не приходилось.
2) Указано что *.dylib — динамическая библиотека, но в примере указан вариант с включением файла в конечный исполняемый файл. Поправьте, если это не так. Вопрос — это на самом деле динамическая библиотека, то что в Linux часто имеет шаблон libNamelibrary.so?
0
Sign up to leave a comment.
Встраивание PyPy кода в приложения на C