He escrito una biblioteca en C. Utilizo SWIG para generar enlaces para Java, Python, etc. Me las arreglé para escribir mapas de tipos personalizados para ambos idiomas y así sucesivamente. También logré usar mi biblioteca (un protocolo personalizado) y comunicarme con un servidor que escribí en C, con un cliente que escribí en Java y con un cliente que estoy escribiendo en Python.SWIG y Python3 Error de importación
Recientemente, me encontré con un problema de herencia múltiple con un solution que encontré inteligente. Pero, al intentar replicar el error usando Python 3, el error desapareció (quizás en la versión 3 está resuelto). El hecho es que, el mismo código, el mismo proyecto y la misma fuente no se ejecutarán invocando python3
binario, pero funciona invocando python2.7 binary.
recibo el mensaje:
ImportError: dynamic module does not define init function (PyInit__pytellapic)
que ya leí lo que podría significar a partir de la documentación TRAGO con un error ligeramente diferente:
import example
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: dynamic module does not define init function (init_example)
Decir que:
This error is almost always caused when a bad name is given to the shared object file. For example, if you created a file example.so instead of _example.so you would get this error. Alternatively, this error could arise if the name of the module is inconsistent with the module name supplied with the %module directive. Double-check the interface to make sure the module name and the shared object filename match. Another possible cause of this error is forgetting to link the SWIG-generated wrapper code with the rest of your application when creating the extension module.
Honestamente , Creo que estas causas probables no se aplicarán a mis módulos, ya que debería ser un error para 2. 7 y 3 versiones de python, no solo para Python 3.
Agradecería cualquier consejo, pero teniendo en cuenta que SWIG parece ser un proyecto obsoleto, probablemente continuaré usando Python 2.7 con el mencionado "hack".
Saludos,
En lo que concierne al parámetro -py3, debo decir que lo he intentado sin éxito. También he probado otras banderas enumeradas en 'swig -python -help' sin suerte. En un par de minutos (tal vez horas) estoy leyendo esa extensión de C. Gracias por su guía y respuesta. – Sebastian
Agrego otro comentario para evitar mezclar y hacer un lío con este. Respondiendo a su pregunta, hice un grep que resultó en: '# define SWIG_init PyInit__pytellapic' así que, sinceramente, no sé por qué me da ese error. – Sebastian
@Sebastian: Publicar el código que genera SWIG podría ser útil, pero sospecho que debe solicitarlo en una lista de correo de SWIG. Parece * que estás haciendo lo correcto a juzgar por la documentación. –