Я столкнулся с той же проблемой. Даже после запуска make.osx
он все еще жаловался на неопределенность _FT_Attach_File
, когда я импортировал ft2font
из matplotlib. Вот как я выследил проблему. Надеюсь, это поможет кому-то еще.
Бег otool -L ft2font.so
уступил:
ft2font.so:
/Users/jbenuck/mpl_build/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
Обратите внимание на отсутствие каких-либо упоминаний о libfreetype! Как ft2font.so
должен найти символ, если он не связан с ним?
Мой следующий шаг - захват команд, использованных во время сборки:
make -f make.osx PREFIX=/usr/local clean fetch deps mpl_build > output.txt
В результате поиска была получена команда, которая использовалась для компиляции модуля python, работающего с ошибками. Я изменил значение выходного файла на один в моем локальном каталоге и запустил его:
/ Разработчик / usr / bin / llvm-g ++ - 4.2 -bundle -undefined dynamic_lookup -isysroot / -L / opt / local / lib -arch i386 -arch x86_64 -L / usr / local / lib -syslibroot, / Developer /SDKs/MacOSX10.7.sdk -arch i386 -arch x86_64 -I / usr / local / include -I / usr / local / include / freetype2 -isysroot /Developer/SDKs/MacOSX10.7.sdk build / temp.macosx- 10.7-x86_64-2.7 / src / ft2font.o build / temp.macosx-10.7-x86_64-2.7 / src / mplutils.o build / temp.macosx-10.7-x86_64-2.7 / CXX / cxx_extensions.o build / temp.macosx -10.7-x86_64-2.7 / CXX / cxxsupport.o build / temp.macosx-10.7-x86_64-2.7 / CXX / IndirectPythonInterface.o build / temp.macosx-10.7-x86_64-2.7 / CXX / cxxextensions.o -L / usr / local / lib -L / usr / local / lib -L / usr / lib -L / usr / X11 / lib -lfreetype -lz -lstdc ++ -lm -o ft2font.so
ld: предупреждение: игнорирование файла /opt/local/lib/libfreetype.dylib, файл создан для неподдерживаемого формата файла, который не связан с архитектурой (x86_64)
Бинго! Проблема найдена. Я знаю, что у меня установлены как macports, так и homebrew. По-видимому, одна из них имеет версию libfreetype
в /opt/local/lib
, которая не скомпилирована для 64-битной версии.
Я перезапустил команду с удаленным "-L /opt/local/lib"
, который работал без предупреждения. Копирование полученного ft2font.so
в мою существующую установку matplotlib теперь позволяет мне успешно импортировать ft2font
из matplotlib.