Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ImportError:未定义符号:用于swig的Py_InitModule4_Python_Gcc_Swig_X86 64_Importerror - Fatal编程技术网

Python ImportError:未定义符号:用于swig的Py_InitModule4

Python ImportError:未定义符号:用于swig的Py_InitModule4,python,gcc,swig,x86-64,importerror,Python,Gcc,Swig,X86 64,Importerror,我正试图通过python使用web上可用的库。作者提供了C代码和swig接口文件(*.i)。用户提供的Make文件没有提供正确的python编译。所以我试着手动编译swig。在编译主库之后,我使用以下命令 swig -python weibull.i gcc -c ../libMR/weibull.c weibull_wrap.c -I/usr/include/python2.4 -fPIC ld -shared weibull.o weibull_wrap.o -o _weibull.so

我正试图通过python使用web上可用的库。作者提供了C代码和swig接口文件(*.i)。用户提供的Make文件没有提供正确的python编译。所以我试着手动编译swig。在编译主库之后,我使用以下命令

swig -python weibull.i
gcc -c ../libMR/weibull.c weibull_wrap.c -I/usr/include/python2.4 -fPIC
ld -shared weibull.o weibull_wrap.o -o _weibull.so
这些步骤很有效。但是,当我尝试通过python导入它时,会出现以下错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "pyweibullw.py", line 29, in <module>
    _pyweibullw = swig_import_helper()
  File "pyweibullw.py", line 21, in swig_import_helper
    import _pyweibullw
ImportError: /usr/lib/python2.4/dist-packages/_pyweibullw.so: undefined symbol: Py_InitModule4

好吧,我知道发生了什么。在/usr/include/python/中的modsupport.h中,您必须将行从#define Py_InitModule4 Py#InitModule4 tracerefs更改为#define Py#u InitModule4 Py#InitModule4 Py#InitModule4 Py InitModule4 64,这也是python 2.6版本中的一个常见问题,尤其是在AMD体系结构上。我想他们还没修好。这将指令放入库的内存中,然后当您尝试导入时,它就不再抱怨它了。这听起来很像-您是否使用Py_DEBUG定义编译了一些东西?
bash-$:uname -a
Linux 2.6.32-5-amd64 #1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/Linux