[英]C ->Python Import Wrapper Problems
我已經在我的C文件blargUtils.c中定義了包裝對象的名稱,如下所示(我在Blargmethods中定義了方法及其用途)...
void initBlarg(){
Py_InitModule("Blarg", Blargmethods);
}
我這樣編譯它...
blarglib: blargUtils.c
gcc -I/usr/include/python2.6 -fPIC -c blargUtils.c -Wall
gcc -shared blargUtils.o -o blargUtils.so
clean:
rm *.so
但是,當我嘗試在我的python腳本中導入包裝器時...
import Blarg
它說:“ ImportError:沒有名為Blarg的模塊”。 我在這里有點迷茫,我不明白為什么當它們完全相同的拼寫時卻找不到類。 也許是邏輯錯誤?
如果需要更多代碼,請告訴我。
首先,從評論看,我發現重命名是行不通的。 這意味着(1)python找不到.so文件,(2).so文件不可用(即,編譯不正確或未找到所有必需的符號),或(3)存在.py /相同名稱的.pyc / .pyo文件。 如果您已經定義了Blarg.py,python將首先查看此文件。 如果在搜索路徑中有一個名為Blarg的目錄,情況也是如此。 因此,不要將頭撞在牆上,請嘗試以下操作:
1)重命名您的.so庫以保證不會沖突(例如_Blarg)
void initBlarg() {
Py_InitModule("_Blarg", Blargmethods);
}
2)用相同的名稱編譯
gcc -I/usr/include/python2.6 -fPIC -c blargUtils.c -Wall
gcc -shared blargUtils.o -Wl,-soname -Wl,_Blarg.so -o _Blarg.so
3)創建一個python包裝器(即Blarg.py)
import sys
sys.path.append('/path/to/your/library')
import _Blarg
def blargFunc1(*args):
"""Wrap blargFunc1"""
return _Blarg.blargFunc1(*args)
4)現在只需正常使用
import Blarg
Blarg.blargFunc1(1, 2, 3)
顯然,這有點矯kill過正,但是它應該可以幫助您確定問題出在哪里。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.