Мне предоставили библиотеку c wave.so с определенной функцией интерфейса, я следую руководству здесь
https://stackoverflow.com/a/5868051/2789784
и это работает. Однако, когда я сделал скрипт файлом MyModule.py и попытался импортировать
import MyModule
Затем он дает мне эту ошибку.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define init function (initwave)
Почему это происходит? Как мне это исправить?
ИСПРАВЛЕНО: поэтому у меня есть и MyModule.py, и MyModule.so в одной папке, python пытался загрузить MyModule.so вместо MyModule.py, и, конечно, он не может быть успешным, измените имя MyModule.py на wave.py а также
import wave
решает проблему. Так что в основном, если вы просто хотите вызвать какую-то библиотечную функцию C++, вам действительно нужна оболочка скрипта python и все, никакого программирования на C. И я могу использовать свою общую библиотеку С++ для другого приложения.
.so
также называетсяMyModule.so
? Это объяснило бы, что Python выбирает не тот файл. - person millimoose   schedule 26.09.2013