2010-09-06 61 views
1

我有一個C++模塊,我使用動態鏈接與SWIG進行封裝。由於python處理導入函數的範圍,我必須在導入後直接運行命令dl.open(library, dl.RLTD_NOW, dl.RTLD_GLOBAL)。這是爲了確保C++庫函數可供其導入的其他庫使用。SWIG - 導入時運行python代碼

當然這意味着爲了導入模塊需要三條線而不是一條線。然而其他線路是不變的,並且不依賴於任何東西。這就是我想要的線條轉換:

import dl 
import module 
dl.open(library, dl.RTLD_NOW, dl.RTLD_GLOBAL) 

到簡單:

import module 

我試圖尋找通過SWIG文檔爲如何使它在模塊的進口運行代碼,但我找不到任何東西。這可能嗎?

謝謝。

回答

2

嘗試包裝你的模塊。將你的C++代碼構建到一個「私有」模塊中,並將其稱爲module_或其他東西,以說明你不應該導入它。然後,在module.py(包裝模塊)中:

import dl 
from module_ import * 
dl.open(library, dl.RTLD_NOW, dl.RTLD_GLOBAL)