2010-09-06 46 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)