[英]Why won't my module work even though I can import it?
我正在關注以下教程: https : //en.wikibooks.org/wiki/Python_Programming/Extending_with_C我指的是標題為“使用Swig”的部分。 我在他的位置創建文件:
~/Desktop/TEST2/helloMODULEtest
我首先使用以下代碼init創建一個名為hellomodule.c的文件:
/*hellomodule.c*/
#include <stdio.h>
void say_hello(const char* name) {
printf("Hello %s!\n", name);
}
然后我在同一位置創建文件hello.i:
/*hello.i*/
%module hello
extern void say_hello(const char* name);
我在Pi上安裝了swig和python-dev。 所以在終端中鍵入這三行:
$ swig -python hello.i
$ gcc -fpic -c hellomodule.c hello_wrap.c -I/usr/include/python2.7/
$ gcc -shared hellomodule.o hello_wrap.o -o _hello.so -lpython2.7
給我這些文件:
然后sudo將hello.py和_hello.so復制到我的python2.7 lib文件中:
$ sudo cp ~/Desktop/TEST2/helloMODULEtest/hello.py /usr/lib/python2.7
$ sudo cp ~/Desktop/TEST2/helloMODULEtest/_hello.so /usr/lib/python2.7
在這些步驟之后,我可以使用Python 2.7.9 shell。 在我輸入的shell中
>>> import hello
並且沒有收到任何警告或錯誤,表明已導入hello.py。 但是,當我輸入
>>> hello.say_hello("World")
模塊似乎什么也沒有返回,然后轉到下一行。 這是導入的“對話框”,並使用我的下一個輸入行調用hello:
>>> import hello
>>> hello.say_hello("World")
>>>
我想看到這個:
>>> import hello
>>> hello.say_hello("World")
Hello World!
>>>
所以,我的問題是為什么我的hello.py模塊沒有返回任何內容?
將hello.i
文件更新為:
/*hello.i*/
%module hello
%{
void say_hello(const char* name);
%}
void say_hello(const char* name);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.