Кажется, проблема в том, что fink никогда не устанавливает переменную LD_LIBRARY_PATH
.ctypes
использует dlopen()
, который не будет искать в /sw/lib
по умолчанию.Со страницы руководства dlopen
:
dlopen () ищет совместимый файл Mach-O в каталогах, заданных набором переменных среды и текущим рабочим каталогом процесса.Если установлено, переменные среды должны содержать разделенный двоеточиями список путей к каталогам, который может быть абсолютным или относительным к текущему рабочему каталогу.Переменными среды являются LD_LIBRARY_PATH, DYLD_LIBRARY_PATH и DYLD_FALLBACK_LIBRARY_PATH.Первые две переменные не имеют значения по умолчанию.Значением по умолчанию для DYLD_FALLBACK_LIBRARY_PATH является $ HOME / lib; / usr / local / lib; / usr / lib.dlopen () ищет каталоги, указанные в переменных среды, в том порядке, в котором они перечислены.
Таким образом, похоже, что решение заключается в том, чтобы поместить в ваши .profile
, .bash_profile
или .bashrc
export LD_LIBRARY_PATH=/sw/lib:"${LD_LIBRARY_PATH}"
Также кажется, что fink устанавливает некоторые библиотеки в подкаталогах под /sw/lib
, например /sw/lib/mysql
.В этих случаях вам также придется явно включить их, поскольку кажется, что dlopen()
не рекурсивно ищет пути в LD_LIBRARY_PATH
.В случае MySQL вам нужно добавить это в путь:
export LD_LIBRARY_PATH=/sw/lib:/sw/lib/mysql:"${LD_LIBRARY_PATH}"