Я пытался понять, как создать файл .pyd
(Python Extension Module) из сценария C (без swig или чего-либо еще, кроме MinGW), и успешно встроил его в .pyd
.
Однако проблема возникает, когда я пытаюсь импортировать модуль.
Если я запускаю его, модуль запускается успешно (насколько я понимаю), а затем появляется сообщение об ошибке Python Has Stopped Working
, и он закрывается, не выполняя остальную часть программы.
Вот мой сценарий C (test.c):
#include <python.h>
int main()
{
PyInit_test();
return 0;
}
int PyInit_test()
{
printf("hello world");
}
И скрипт Python (file.py):
import test
print('Run From Python Extension')
Я скомпилировал скрипт с помощью:
gcc -c file.py
gcc -shared -o test.pyd test.c
Я не могу найти никаких ошибок при компиляции в командной строке и использую python 3.6 (работает в Windows 10).
Я не могу найти много информации по этой теме и предпочел бы держаться подальше от Cython (я уже знаю C) и Swig.
Любая помощь, чтобы сказать мне, что не так, была бы фантастической.
.pyd
файл в той же папке, что и сценарий Python, который пытаетсяimport
его выполнить? Python ищет модули определенным образом в определенных местах, и может быть просто вашей библиотеки нет ни в одном из тех мест, где он ищет. См. Создание расширений C и C ++ в документации. - person martineau   schedule 14.08.2017.pyd
в ту же папку, что и скрипт python, из которого я пытался его импортировать. Это заставило меня задуматься, и я поместил это в Lib. Отсюда я смог импортировать его, не получив ошибки, однако «привет, мир» не печатал просто «завершено» - person Simon   schedule 14.08.2017