Python找不到用swig编译的模块
我在使用SWIG和Python时遇到了问题。我有一个C类可以正常编译,但Python脚本却说找不到这个模块。
我用以下命令进行编译:
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
这让我得到了一个名为_codes.so的文件,正如我所期待的那样,但接下来我有这个Python文件:
import sys
import codes
(rest of the code omitted)
运行后出现:
Traceback (most recent call last):
File "script.py", line 3, in <module>
import codes
ImportError: No module named codes
根据这个链接,我应该只需要这样做就可以了……这些文件在同一个目录下,所以路径应该不是问题吧?
3 个回答
0
如果你在同一个地方(文件夹)执行这些命令,_codes.so 文件会出现在当前文件夹里,而 codes.py 文件会放在 ./codes/ 这个子文件夹里,我想是这样的。
0
我上次使用SWIG的时候,它生成了两个文件。在你的情况中,应该是codes.py和_codes.so这两个文件。
你需要检查一下为什么codes.py这个文件没有出现。
1
如果你是发布版本的话,把你的 _codes.so 文件改名为 _codes.pyd。如果是调试版本,就改名为 _codes_d.pyd。
希望这对你有帮助。