Python загружает только одну разделяемую библиотеку, когда существует несколько с одним и тем же именем (и разными символами) - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь загрузить два разных модуля, которые ссылаются на отдельные версии одной и той же разделяемой библиотеки.

Вот псевдокод проблемы; где UserModule нужна та же библиотека и символы, что и в исходном модуле.

# dummy load initial module 
import ctypes
ctypes.CDLL('/path/to/different/libname.so')

# load another module
import UserModule

ImportError: /path/to/UserModule/libUserModule.so: неопределенный символ

Я могу удалить исходную общую библиотеку с помощью ctypes.CDLL ('libdl.so'). Dlclose (), а затем загрузить следующую библиотеку. Но я хочу, чтобы они оба загружались в память одновременно, без этой путаницы.

Я тоже пытался использовать

# try to load memory locally
import sys
import DLFCN
sys.setdlopenflags( DLFCN.RTLD_NOW | DLFCN.RTLD_LOCAL )

# dummy load initial module
import ctypes
ctypes.CDLL('/path/to/different/libname.so')

# load another module
import UserModule

Но происходит сбой с той же ошибкой.

Есть ли способ загрузить модуль с тем же именем в память на python, чтобы его можно было использовать с разными модулями?

Edit: Чтобы быть более точным с вопросом. Python загружает в общую библиотеку в память. Когда я пытаюсь импортировать другой модуль, который ссылается на другую общую библиотеку с тем же именем, кажется, что python не загружается в эту новую общую библиотеку. Почему это произошло?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...