SWIG - 导入时运行Python代码
我有一个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 个回答
2
试着把你的模块包裹起来。把你的C++代码做成一个“私有”的模块,可以叫它 module_
或者其他名字,这样就能明确表示不应该导入它。然后,在 module.py
(这个包裹模块)里:
import dl
from module_ import *
dl.open(library, dl.RTLD_NOW, dl.RTLD_GLOBAL)