簡體   English   中英

為什么我的模塊不能工作,即使我可以導入它?

[英]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

給我這些文件:

  • hellomodule.o
  • hello.py
  • _hello.so
  • hello_wrap.c
  • hello_wrap.o

然后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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM