У пакета Python, который я разрабатываю, есть зависимость (pyfluidsynth), которая нарушается в моей системе, вызывая ошибку AttributeError при импорте. Pyfluidsynth - это оболочка для библиотеки C «fluidsynth», и причина ее поломки в том, что она пытается обернуть пару функций C, которых нет в библиотеке, по крайней мере, для версии fluidsynth в моей системе.
Это оскорбительные строки кода:
fluid_synth_set_reverb_full = cfunc('fluid_synth_set_reverb_full', c_int,
('synth', c_void_p, 1),
('set', c_int, 1),
('roomsize', c_double, 1),
('damping', c_double, 1),
('width', c_double, 1),
('level', c_double, 1))
fluid_synth_set_chorus_full = cfunc('fluid_synth_set_chorus_full', c_int,
('synth', c_void_p, 1),
('set', c_int, 1),
('nr', c_int, 1),
('level', c_double, 1),
('speed', c_double, 1),
('depth_ms', c_double, 1),
('type', c_int, 1))
... и ошибка, которую я получаю:
AttributeError: /lib64/libfluidsynth.so.1: неопределенный символ: fluid_synth_set_reverb_full
Это достаточно легко исправить: я не использую эту функциональность, поэтому я могу просто окружить два оператора попыткой / за исключением моей копии библиотеки fluidsynth. Но при распространении собственного пакета я не могу полагаться на версию pyfluidsynth в pypi, поскольку она будет работать по крайней мере на компьютерах некоторых людей.
Эта проблема была подана, но разработчик pyfluidsynth еще не исправил ее. Между тем, есть ли способ, которым я могу импортировать pyfluidsynth так, чтобы он перехватывал исключения, игнорировал их и продолжал импортировать остальную часть модуля?