Я написал библиотеку на C. Я использую SWIG для генерации привязок для Java, Python и т. Д. Мне удалось написать пользовательские карты типов для обоих языков и так далее.Мне также удалось использовать свою библиотеку (собственный протокол) и связаться с сервером, который я написал на C, с клиентом, который я написал на Java, и с клиентом, который я пишу на Python.
Недавно я столкнулся с проблемой множественного наследования с решением , которое я нашел умным.Но при попытке повторить ошибку с помощью Python 3 ошибка исчезла ( возможно в версии 3 решена).Дело в том, что один и тот же код, тот же проект и тот же источник не будут запускаться, вызывая двоичный файл python3
, но он работает, вызывая двоичный файл python2.7.
Я получаю сообщение:
ImportError: dynamic module does not define init function (PyInit__pytellapic)
Что я уже прочитал, что может означать из документации SWIG с несколько иной ошибкой:
import example
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: dynamic module does not define init function (init_example)
Сказать, что:
Эта ошибка почти всегда возникает, когдаплохое имя присваивается файлу общего доступа.Например, если вы создали файл example.so вместо _example.so, вы получите эту ошибку.Кроме того, эта ошибка может возникнуть, если имя модуля не соответствует имени модуля, указанному в директиве% module.Дважды проверьте интерфейс, чтобы убедиться, что имя модуля и имя файла общего объекта совпадают.Другая возможная причина этой ошибки - забыть связать сгенерированный SWIG-код обертки с остальной частью вашего приложения при создании модуля расширения.
Честно говоря, я думаю, что эти вероятные причины не будут применяться кмои модули, как это должно быть ошибка для 2.7 и 3 версий python, а не только для Python 3.
Буду признателен за любой совет, но, учитывая, что SWIG кажется устаревшим проектом, вероятно, я будупродолжение использования Python 2.7 с упомянутым хаком.
С уважением,