2 Stimmen

Modul, das mit SWIG kompiliert wurde, wurde von Python nicht gefunden.

Ich habe ein Problem mit SWIG und Python. Ich habe eine C-Klasse, die korrekt kompiliert, aber das Python-Skript sagt, dass es das Modul nicht finden kann.

Ich kompiliere mit:

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

Dies gibt mir eine _codes.so Datei, wie ich erwarten würde, aber dann habe ich diese Python-Datei:

import sys
import codes

(rest des Codes ausgelassen)

Es gibt mir:

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

Laut http://www.swig.org/Doc1.3/Introduction.html#Introduction_nn8 sollte das alles sein, was ich tun muss... Die Dateien befinden sich im selben Verzeichnis, also sollte der Pfad kein Problem sein?

1voto

sambha Punkte 1253

Benennen Sie Ihre _codes.so in _codes.pyd um, wenn es sich um eine Release-Version handelt. Benennen Sie es in _codes_d.pyd um für Debug-Versionen.

HTH

0voto

ascobol Punkte 7346

Das letzte Mal, als ich SWIG verwendet habe, hat es zwei Dateien generiert. In Ihrem Fall sollten es die Dateien codes.py und _codes.so sein.

Sie sollten überprüfen, warum codes.py nicht vorhanden ist.

0 Stimmen

Das ist in der Tat das Problem, es gibt keine .py Datei. Aber ich habe keine Ahnung warum, und das Googeln scheint nicht zu helfen. SWIG gibt mir eine Warnung, die möglicherweise relevant ist: "Warnung(312): Verschachtelte Strukturen werden derzeit nicht unterstützt (ignoriert)", aber ich verwende keine verschachtelten Strukturen (nur eine Struktur mit ints), und da die .so Datei generiert wird, vermute ich, dass das nicht das Problem ist?

0voto

iondiode Punkte 650

Wenn Sie diese Befehle vom selben Ort (Verzeichnis) ausführen, landet _codes.so in . und codes.py landet in ./codes/, glaube ich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X