2010-05-01 6 views
1

J'ai un problème avec SWIG et python. J'ai un c-class qui compile correctement, mais le script python dit qu'il ne trouve pas le module.module compilé avec swig non trouvé par python

Je compilez avec:

swig -c++ -python codes/codes.i 
g++ -c -Wall -O4 -fPIC -pedantic codes/*.cc 
g++ -I/usr/include/python2.6 -shared codes/codes_wrap.cxx *.o -o _codes.so 

Cela me donne un fichier _codes.so, comme je l'attendre, mais je ce fichier python:

import sys 
import codes 

(rest of the code omitted) 

Il me donne:

Traceback (most recent call last): 
    File "script.py", line 3, in <module> 
    import codes 
ImportError: No module named codes 

Selon http://www.swig.org/Doc1.3/Introduction.html#Introduction_nn8 c'est tout ce que je devrais avoir à faire ... Les fichiers e dans le même répertoire, donc le chemin ne devrait pas être un problème?

Répondre

0

La dernière fois que j'ai utilisé SWIG, il a généré deux fichiers. Dans votre cas, il devrait être codes.py et _codes.so

Vous devriez vérifier pourquoi codes.py n'est pas présent.

+0

C'est effectivement le problème, il n'y a pas de fichier .py. Mais je n'ai aucune idée pourquoi, et googling ne semble pas aider. SWIG me donne un avertissement qui pourrait être pertinent: "Attention (312): La structure imbriquée n'est pas supportée actuellement (ignorée)", mais je n'utilise pas de structure imbriquée (une seule structure avec ints), et depuis que le fichier .so est généré , Je soupçonne que ce n'est pas le problème? – openbas2

0

si vous exécutez ces commandes à partir de la même place (répertoire) _codes.so finit dans. et codes.py se termine par ./codes/, je pense.

0

Renommez votre _codes.so en _codes.pyd s'il s'agit d'une version de version. Renommez _codes_d.pyd pour les versions de débogage.

HTH

Questions connexes