#python #bash #python-2.7 #makefile
#python #bash #python-2.7 #makefile
Вопрос:
Я пытаюсь установить следующий пакет в свой macOS High Sierra 10.13.6:
https://github.com/Michalychforever/CLASS-PT
Когда я запускаю make-файл, все выглядит нормально. Он не только генерирует исполняемый файл, который я могу запустить с помощью терминала с помощью команды ./ , но и оболочку python. Проблема связана только с первым.
Когда я пытаюсь импортировать библиотеку, я получаю следующее сообщение:
import classy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/thiagomergulhao/Library/Python/2.7/lib/python/site-packages/classy.so, 2): Symbol not found: _zdotu_
Referenced from: /Users/thiagomergulhao/Library/Python/2.7/lib/python/site-packages/classy.so
Expected in: flat namespace
in /Users/thiagomergulhao/Library/Python/2.7/lib/python/site-packages/classy.so
Я использую встроенную версию python (т.е. 2.7.10). Я уже установил Xcode 10.1 вместе с командами командной строки. Мой .bash_profile:
export PATH="/Users/thiagomergulhao/Library/Python/2.7/bin:$PATH"
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
У кого-нибудь есть идеи, что вызывает эту проблему?
Комментарии:
1. Инструкции к пакету указывают на установку правильных путей для разделяемых библиотек. Вы уверены, что правильно их установили? Поскольку ошибка связана с файлом общей библиотеки. Вы не указали заданный вами путь и шаги, которые вы предприняли для компиляции указанной библиотеки. В соответствии с этим это не так просто, как
make
установить библиотеку, пути должны быть правильными.2. @Xk0nSid Спасибо за ответ! Да, я следовал всем инструкциям, стоя там. На самом деле у меня есть такая же программа, запущенная на моем компьютере с Linux. Я играл с файлом makefile, пытаясь понять, что происходит. Я понял, что она успешно компилируется только тогда, когда я комментирую флаг OpenMP. Как вы думаете, это причина, по которой я столкнулся с этой проблемой? Честно говоря, у меня нет опыта работы с компиляторами. Автор заявляет, что я могу прокомментировать этот флаг, если он мне не нужен…
3. Проблема решена! Флаг -fopenmp действительно был решающим… После установки python3 (я думаю, это также будет работать с python 2.7) я искал способы заставить этот флаг работать. Чтобы сделать это, я установил brew gcc и использовал в Makefile gcc-10 вместо gcc. После этого все выглядит нормально!