这是我的代码:
example.c
#include <time.h> double My_variable = 3.0; int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } int my_mod(int x,int y) { return (x%y); }
example.h文件
#ifndef EXAMPLE_H_#define EXAMPLE_H_ extern double My_variable; extern int fact(int n); extern int my_mod(int x,int y);#endif
example.i
%module example %{ /* Put header files here or function declarations like below */#define SWIG_file_WITH_INIT #include "example.h" %}%#include "example.h"
Makefile文件
all: rm -f *.so *.o *_wrap.* *.pyc swig -python example.i gcc -c -fPIC example_wrap.c -I/usr/include/python2.7 gcc -shared example_wrap.o -o _example.soclean: rm -f *.so *.o *_wrap.* *.pyc
test.py
import exampleprint str(example.fact(2))
test.py用于检查扩展是否有效.但是当我运行test.py时,它输出:
Traceback (most recent call last): file "test.py",line 3,in <module> print str(example.fact(2))AttributeError: 'module' object has no attribute 'fact'
这是我使用dir时的输出(例子):
['__builtins__','__doc__','__file__','__name__','__package__','_example','_newclass','_object','_swig_getattr','_swig_property','_swig_repr','_swig_setattr','_swig_setattr_nondynamic']
出现这个输出的原因是什么?
如果我想要成功运行该程序,我该怎么办?
解决方法 请尝试更换如下:%#include "example.h"
通过
%include "example.h"总结
以上是内存溢出为你收集整理的python – SWIG:AttributeError:’module’对象没有属性’fact’全部内容,希望文章能够帮你解决python – SWIG:AttributeError:’module’对象没有属性’fact’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)