Mac 10.6 Universal Binary scipy: символ cephes / specfun "_aswfa_" не найден

Я не могу заставить scipy функционировать в 32-битном режиме, когда скомпилирован как универсальный двоичный файл i386 / x86_64 и выполнен на моем 64-битном 10.6.2 MacPro1,1.

Моя настройка python

С помощью этого ответа я построил 32/64 бит универсального бинарного файла python 2.6.4 с целью использования команды arch для выбора между архитектурами. (Мне удалось создать несколько универсальных двоичных файлов из нескольких библиотек, которые я хотел использовать lipo.) Все это работает. Затем я установил scipy в соответствии с инструкциями по статье гипергеффа , только с более современным numpy (1.4.0) и пропуском бит в сторону короткого перемещения в процессе установки scipy.

Теперь все, кроме scipy, похоже, работает, насколько я могу судить, и я действительно могу выбирать между 32 и 64-битным режимом, используя arch -i386 python arch -x86_64 python и arch -x86_64 python .

Ошибка

Scipy жалуется на 32-битный режим:

 $ arch -x86_64 python -c "import scipy.interpolate; print 'success'" success $ arch -i386 python -c "import scipy.interpolate; print 'success'" Traceback (most recent call last): File "<string>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/interpolate/__init__.py", line 7, in <module> from interpolate import * File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/interpolate/interpolate.py", line 13, in <module> import scipy.special as spec File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/__init__.py", line 8, in <module> from basic import * File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/basic.py", line 8, in <module> from _cephes import * ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/_cephes.so, 2): Symbol not found: _aswfa_ Referenced from: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/_cephes.so Expected in: flat namespace in /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/_cephes.so 

Попытка выявить проблему

Похоже, что scipy.interpolate импортирует что-то под названием _cephes , которое ищет символ под названием _aswfa_ но не может найти его в 32-битном режиме. Просмотр через источник scipy, я нахожу подпрограмму ASWFA в specfun.f. Единственный файл scipy с похожим именем – specfun.so, но оба и _cephes.so кажутся универсальными двоичными файлами:

 $ cd /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/ $ file _cephes.so specfun.so _cephes.so: Mach-O universal binary with 2 architectures _cephes.so (for architecture i386): Mach-O bundle i386 _cephes.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 specfun.so: Mach-O universal binary with 2 architectures specfun.so (for architecture i386): Mach-O bundle i386 specfun.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 

Хог. Я застрял. Вещи, которые я могу попробовать, но не выяснили, как включить компиляцию specfun.so самостоятельно, как-то.

Я бы предположил, что scipy не разбит на все 32-битные машины, поэтому я думаю, что что-то не так с тем, как я его установил, но я не могу понять, что.

Я действительно не ожидаю полного ответа, учитывая мою уникальную (?) Настройку, но если у кого-то есть какие-то подсказки, которые могли бы указать мне в правильном направлении, они были бы весьма признательны.

(изменить) Дополнительные сведения для решения вопросов:

Я использую gfortran (GNU Fortran из GCC 4.2.1 Apple Inc. build 5646).

Python 2.6.4 был установлен более-менее:

 cd /tmp curl -O http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2 tar xf Python-2.6.4.tar.bz2 cd Python-2.6.4 # Now replace buggy pythonw.c file with one that supports the "arch" command: curl http://bugs.python.org/file14949/pythonw.c | sed s/2.7/2.6/ > Mac/Tools/pythonw.c ./configure --enable-framework=/Library/Frameworks --enable-universalsdk=/ --with-universal-archs=intel make -j4 sudo make frameworkinstall 

Scipy 0.7.1 был установлен в значительной степени, как описано здесь , но он сводится к простой установке sudo python setup.py install .

Было бы действительно, что символ не определен в архитектуре i386, если вы посмотрите на библиотеку _cephes с nm , как предложил Дэвид Курнапо:

 $ nm -arch x86_64 /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/_cephes.so | grep _aswfa_ 00000000000d4950 T _aswfa_ 000000000011e4b0 d _oblate_aswfa_data 000000000011e510 d _oblate_aswfa_nocv_data (snip) $ nm -arch i386 /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/_cephes.so | grep _aswfa_ U _aswfa_ 0002e96c d _oblate_aswfa_data 0002e99c d _oblate_aswfa_nocv_data (snip) 

однако я пока не могу объяснить его отсутствие.

2 Solutions collect form web for “Mac 10.6 Universal Binary scipy: символ cephes / specfun "_aswfa_" не найден”

Вы пытались использовать scipy, скомпилированный с использованием macports?

 sudo port install scipy +universal 

(конечно, вы должны иметь остальную часть цепочки, python , py26-numpy скомпилированный с той же опцией)

Я получил:

 $ arch -x86_64 /opt/local/bin/python -c "import scipy.interpolate; print 'success'" success $ arch -i386 /opt/local/bin/python -c "import scipy.interpolate; print 'success'" success 

вы можете затем использовать настройки и знания, которые использовались разработчиками макрокоманд для создания собственной компиляции.

Как вы установили scipy, для которого версия python и с каким компилятором fortran?

Вы также можете проверить, что отсутствующий символ действительно находится в обеих дугах (я не помню, с какой стороны функция, но вы можете легко найти ti самостоятельно, используя комбинацию nm / otool).

 
Interesting Posts for Van-Lav

Разница между sort_values ​​и sort_index

Программисты Dragon NaturallySpeaking

Как вычислить (alt, az) для данной галактической координаты (GLON, GLAT) с PyEphem?

Как очистить таблицы в тысячах PDF-файлов?

Как отлаживать значения NaN в TensorFlow?

Прочитайте файл с разделяемой вкладкой с первым столбцом в качестве ключа, а остальные как значения

Как прогнозировать на python, используя машинное обучение, из заданного набора географических данных?

Python: список, содержащий подсписку строк

Как использовать несколько разделителей при использовании csv.reader в python?

Как выполнить свертку в python с гауссовой переменной переменной ширины?

внедрение lisp в Python

PySide QWebView и загрузка неподдерживаемого контента

`pip install pandas` дает UnicodeDecodeError: кодек ascii не может декодировать байт 0xe2 в позиции 41: порядковый номер не в диапазоне (128)

Работа с двоеточием в селекторах BeautifulSoup CSS

Функция со словарями в качестве дополнительных аргументов – Python

Python - лучший язык программирования в мире.