Python找不到用swig编译的模块

2 投票
3 回答
3235 浏览
提问于 2025-04-15 22:14

我在使用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。

希望这对你有帮助。

撰写回答