2012-08-15 36 views
2

我想編寫一個Python包來包裝我正在寫的一個新的C庫 - 說實話,這都是一種學習練習。我想打電話給圖書館spam(當然),C庫就是這樣構建的。是否可以在同一個命名空間中混合使用C和Python?

Spam/ 
    lib/ 
     foo.c 
     Makefile 
     libspam.a /* Generated by Makefile */ 
     libspam.so /* Generated by Makefile */ 

假設foo.c的提供了一個單一的公共職能foo(char * bar)。同時,我想提供一個Python包。我想提供foo和另一個函數的包裝,在相同的命名空間下。 safe_fooPython函數,它對bar執行一些檢查,然後調用foo。他們可以這樣調用

import spam 

file='hello.txt' 
foo(file) 
safe_foo(file) 

這可能嗎?

類似的情況是我開發了一個Python包,然後希望在不中斷API的情況下將一個函數重新實現爲C函數。

你也許能看到我有點新的Python包裝...

回答

2

這樣做的通常的方法是用下劃線(如_foo.so)前綴C模塊,然後讓Python的模塊正常命名(例如foo.py)。 foo執行_foo的導入,幷包含調用C模塊中函數的存根。

相關問題