SWIG - запуск кода Python при импорте - PullRequest
1 голос
/ 06 сентября 2010

У меня есть модуль 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 голосов
/ 07 сентября 2010

Попробуйте обернуть ваш модуль.Создайте свой код C ++ в «закрытый» модуль и назовите его module_ или что-то в этом роде, чтобы понять, что вам не следует его импортироватьЗатем в module.py (модуль обертки):

import dl
from module_ import *
dl.open(library, dl.RTLD_NOW, dl.RTLD_GLOBAL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...