gpt4 book ai didi

python - 痛饮 : AttributeError: 'module' object has no attribute 'fact'

转载 作者:太空狗 更新时间:2023-10-29 15:40:34 24 4
gpt4 key购买 nike

我正在研究如何使用 swig 为我的 python 代码进行 C 扩展。我使用从网站获得的代码作为示例。这是我的代码:

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

示例.i

%module example
%{
/* Put header files here or function declarations like below */
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}

%#include "example.h"

生成文件

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.so

clean:
rm -f *.so *.o *_wrap.* *.pyc

测试.py

import example

print 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 - 痛饮 : AttributeError: 'module' object has no attribute 'fact' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com