Выполнить двоичную строку модуля C - PullRequest
0 голосов
/ 21 марта 2020

Кто-то создал модуль C для python с Nuitka. (Исходный код Python недоступен, модуль уже скомпилирован - поэтому это двоичный файл машины.) Я хотел бы использовать код в другом инструменте, который исключает только файлы Python. Поэтому я хотел бы включить код C в Python.

Для получения более подробной информации c: Пока у меня есть файлы thatmodule.pyi и thatmodule.so. Я могу включить их в свой текущий код Python, просто запустив import thatmodule внутри mymodule.py. Теперь мне нужен только один Python файл mymodule.py.

. Моя текущая идея - скопировать код из thatmodule.pyi в начало mymodule.py и преобразовать thatmodule.so в двоичную строку с

with open('thatmodule.so', mode='rb') as file:
    fileContent = file.read()

... missing ... how to convert fileContent to b'string'...

и поместите эту двоичную строку в mymodule.py. И затем я должен выполнить эту двоичную строку из моего python модуля mymodule.py. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Если у вас есть документация, в которой описаны функции для thatmodule.so, вы можете использовать следующее:

import ctypes
mylib = ctypes.CDLL("thatmodule.so")

Документация здесь

0 голосов
/ 21 марта 2020

Вам нужно будет записать его в файл (и, вероятно, тоже .pyi), а затем использовать python importlib для его динамического импорта.

...