Компиляция кода C, сгенерированного во время выполнения в Python - PullRequest
0 голосов
/ 31 января 2019

Я генерирую некоторый код C во время выполнения в Python.Каков наилучший способ скомпилировать этот код в что-то , которое можно вызвать из Python?Я знаю, что я могу сделать:

import subprocess
from ctypes import cdll
subprocess.run(['gcc', '-shared', '-o', 'tempfile.so', 'tempfile.c'])
main_function = cdll.LoadLibrary('tempfile.so').main

Но это большая работа, чтобы решить все крайние случаи и проблемы переносимости, связанные с этим решением.Я надеялся, что это достаточно распространенная проблема, поскольку у него есть стандартное решение, которое абстрагирует сложные части (поиск установленного компилятора, запись во временный каталог, обработка ошибок, очистка мусора и т. Д.).

Я обнаружил, что weave может сделать это, но это только Python 2.Я на Python 3.

Это не вопрос о том, как импортировать уже скомпилированный C-код.Я знаком с ctypes.

Это также не вопрос создания другого кода, который может быть обработан проще.Я знаком с numba и cython, которые компилируют код Python, но если у них нет скрытой возможности принимать чистый код C, это не будет работать, потому что код C генерируется внешним инструментом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...