Можно ли импортировать скомпилированные Cython расширения .so на другие языки, например. Джава?

Я изучаю Cython и не смог найти прямого ответа на этот вопрос. Также, пожалуйста, потерпите меня, так как мое понимание C ограничено на данный момент. Насколько я понимаю, с помощью команды cythonize файлы .pyx конвертируются в C и компилируются в специфичные для платформы библиотеки (.so/.pxd). Мои вопросы:

  1. Если файлы .pyx полностью преобразованы в C, означает ли это, что эти сгенерированные расширения больше не зависят от среды выполнения python после компиляции?

  2. Предполагая ту же архитектуру хоста, могут ли эти сгенерированные расширения быть загружены на другие языки, например. через Java JNI? Если да, то есть ли какие-нибудь примеры приветствия по этому поводу?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Расширения Cython полностью написаны на C, но они активно используют Python C API. Это означает, что их нельзя запускать независимо от libpython (и обычно от стандартной библиотеки Python). Однако можно загрузить libpython на другие языки, а затем использовать расширение Cython. Также имейте в виду, что все, что вы импортируете в Cython, не компилируется, но должно быть доступно для импорта.

  2. Я не планирую отвечать на этот вопрос полностью, но и ImageJ (на Java), и Julia поддерживают уровни совместимости Python, и там будут работать расширения Cython. Вам гораздо лучше искать «уровень взаимодействия Python-Java», чем пытаться создать свой собственный способ использования Cython.

Другие вопросы по теме