SWIG - 导入时运行python代码

时间:2010-09-06 08:40:51

标签: python swig

我有一个C ++模块,我用SWIG包装,使用动态链接。由于python处理导入函数范围的方式,我必须在导入后直接运行命令dl.open(library, dl.RLTD_NOW, dl.RTLD_GLOBAL)。这是为了确保C ++库函数可供其导入的其他库使用。

当然这意味着为了导入模块需要三行而不是一行。然而,其他线是不变的,并且不依赖于任何东西。那是我想转换的行:

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

简单地说:

import module

我已经尝试查看SWIG文档,了解如何在导入模块时运行代码,但我找不到任何东西。这可能吗?

感谢。

1 个答案:

答案 0 :(得分:2)

尝试包装模块。将您的C ++代码构建到“私有”模块中,并将其命名为module_或其他内容,以明确您不应导入它。然后,在module.py(包装器模块)中:

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