Да, это возможно, но требуется небольшой взлом.
Сначала давайте рассмотрим нашу основную программу и вспомогательную библиотеку
cythontest.pyx:
cpdef int square(int n):
return n * n
cythontestmain.pyx
import cythontest
print(cythontest.square(100))
Давайте создадим его с помощью:
cython3 --embed cythontestmain.pyx
cython3 cythontest.pyx
gcc -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python3.5m -o cythontestmain cythontestmain.c cythontest.c -lpython3.5m
К сожалению, это не работает.Загрузчик не может найти модуль.К счастью, его можно загрузить вручную, добавив пару строк в начало cythontestmain.pyx
cdef extern void * PyInit_cythontest()
PyInit_cythontest()
(тип возвращаемого значения void * не совсем корректен, но так как мы отбрасываем возвращаемый результатзначение в любом случае это вряд ли будет проблемой на практике).
Теперь мы можем успешно собрать и запустить программу.