Scipy binário universal Mac 10.6: cephes / specfun "_aswfa_" símbolo não encontrado

Não consigo fazer com que o scipy funcione no modo de 32 bits quando compilado como um binário universal i386 / x86_64 e executado no meu MacPro1,1 10.6.2 de 64 bits.

Minha configuração python

Com a ajuda deesta resposta, Construí um binário intel universal de 32/64 bits do python 2.6.4 com a intenção de usar oarch comando para selecionar entre as arquiteturas. (Consegui fazer alguns binários universais de algumas bibliotecas que eu queria usar lipo.) Isso tudo funciona. Em seguida, instalei o scipy de acordo com as instruções nahype, artigo de rjeff, apenas com o numpy mais atualizado (1.4.0) e pulando um pouco para mover o numpy de lado brevemente durante a instalação do scipy.

Agora, tudo, exceto o scipy, parece estar funcionando até onde eu sei, e eu posso realmente selecionar entre o modo de 32 e 64 bits usandoarch -i386 python earch -x86_64 python.

O erro

O Scipy reclama no modo de 32 bits:

$ 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
Tentativa de rastrear o problema

Parece que scipy.interpolate importa algo chamado_cephes, que procura um símbolo chamado_aswfa_ mas não consegue encontrá-lo no modo de 32 bits. Navegando pela fonte do scipy, encontro umASWFA sub-rotina em specfun.f. O único arquivo de produto scipy com um nome semelhante é specfun.so, mas ambos, _cephes.so, parecem binários universais:

$ 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

Ho hum. Estou preso. Coisas que eu posso tentar, mas ainda não descobri como incluir a compilação specfun.so manualmente, de alguma forma.

Eu imagino que o scipy não está quebrado para todas as máquinas de 32 bits, então acho que algo está errado com a maneira como o instalei, mas não consigo descobrir o que.

Eu realmente não espero uma resposta completa, dada a minha configuração bastante única (?), Mas se alguém tiver alguma pista que possa me indicar a direção certa, ela será muito apreciada.

(editar) Mais detalhes para responder às perguntas:

Estou usando o gfortran (GNU Fortran do GCC 4.2.1 Apple Inc. build 5646).

O Python 2.6.4 foi instalado mais ou menos assim:

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

O Scipy 0.7.1 foi instalado praticamente como descritoaqui, mas tudo se resume a um simplessudo python setup.py install.

De fato, parece que o símbolo não está definido na arquitetura i386 se você olhar para a biblioteca _cephes comnm, como sugerido por David Cournapeau:

$ 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)

no entanto, ainda não consigo explicar sua ausência.

questionAnswers(2)

yourAnswerToTheQuestion