Created attachment 502306 [details] ipython traceback Description of problem: Importing scipy under jmodelica leads to: ImportError: /usr/lib/python2.7/site-packages/scipy/linalg/clapack.so: undefined symbol: clapack_sgesv Version-Release number of selected component (if applicable): scipy-0.9.0-1.fc15.i686 How reproducible: Always Steps to Reproduce: 1. From jmodelica python shell issue "from jmodelica.examples import * Actual results: Above import error Expected results: No errors Additional info: Could be jmodelica problem
Comment on attachment 502306 [details] ipython traceback > >In [1]: from jmodelica.examples import * >JVM started. >--------------------------------------------------------------------------- >ImportError Traceback (most recent call last) > >/home/jrwebb/jm_work/<ipython console> in <module>() > >/usr/local/jmodelica/Python/jmodelica/examples/cstr_mpc.py in <module>() > 22 import numpy as N > 23 import scipy as S >---> 24 import scipy.optimize as opt > 25 import ctypes as ct > 26 import matplotlib.pyplot as plt > >/usr/lib/python2.7/site-packages/scipy/optimize/__init__.py in <module>() > 12 from tnc import fmin_tnc > 13 from cobyla import fmin_cobyla >---> 14 from nonlin import * > 15 from slsqp import fmin_slsqp > 16 from nnls import nnls > >/usr/lib/python2.7/site-packages/scipy/optimize/nonlin.py in <module>() > 111 import sys > 112 import numpy as np >--> 113 from scipy.linalg import norm, solve, inv, qr, svd, lstsq, LinAlgError > 114 from numpy import asarray, dot, vdot > 115 import scipy.sparse.linalg > >/usr/lib/python2.7/site-packages/scipy/linalg/__init__.py in <module>() > 7 > 8 from misc import * >----> 9 from basic import * > 10 from decomp import * > 11 from decomp_lu import * > >/usr/lib/python2.7/site-packages/scipy/linalg/basic.py in <module>() > 12 > 13 from flinalg import get_flinalg_funcs >---> 14 from lapack import get_lapack_funcs > 15 from misc import LinAlgError > 16 from scipy.linalg import calc_lwork > >/usr/lib/python2.7/site-packages/scipy/linalg/lapack.py in <module>() > 13 > 14 from scipy.linalg import flapack >---> 15 from scipy.linalg import clapack > 16 _use_force_clapack = 1 > 17 if hasattr(clapack,'empty_module'): > >ImportError: /usr/lib/python2.7/site-packages/scipy/linalg/clapack.so: undefined symbol: clapack_sgesv > I forgot: $ ldd /usr/lib/python2.7/site-packages/scipy/linalg/clapack.so linux-gate.so.1 => (0x00ac3000) liblapack.so.3 => /usr/lib/atlas/liblapack.so.3 (0x00110000) libptf77blas.so.3 => /usr/lib/atlas/libptf77blas.so.3 (0x00b81000) libptcblas.so.3 => /usr/lib/atlas/libptcblas.so.3 (0x006a5000) libatlas.so.3 => /usr/lib/atlas/libatlas.so.3 (0x00777000) libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00b9c000) libgfortran.so.3 => /usr/lib/libgfortran.so.3 (0x00d32000) libm.so.6 => /lib/libm.so.6 (0x006c5000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00ed2000) libquadmath.so.0 => /usr/lib/libquadmath.so.0 (0x00a4f000) libc.so.6 => /lib/libc.so.6 (0x00eef000) libf77blas.so.3 => /usr/lib/atlas/libf77blas.so.3 (0x006f0000) libcblas.so.3 => /usr/lib/atlas/libcblas.so.3 (0x0070b000) libpthread.so.0 => /lib/libpthread.so.0 (0x0072b000) libdl.so.2 => /lib/libdl.so.2 (0x00746000) libutil.so.1 => /lib/libutil.so.1 (0x0074b000) /lib/ld-linux.so.2 (0x461ac000)
Hmm, should be possible to reproduce this with: python -c "from scipy.linalg import clapack" Could you check that please? But didn't work here on x86_64, but the symbol is there: $ strings -a /usr/lib64/python2.7/site-packages/scipy/linalg/clapack.so | grep clapack_sgesv clapack_sgesv Don't know where this error comes from (or it's too late right now^^).
python -c "from scipy.linalg import clapack" works fine >>> from scipy.linalg import clapack >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'clapack'] >>>
Seems to be related to ipython: In [1]: from scipy.linalg import clapack --------------------------------------------------------------------------- ImportError Traceback (most recent call last) /home/jrwebb/jm_work/<ipython console> in <module>() /usr/lib/python2.7/site-packages/scipy/linalg/__init__.py in <module>() 7 8 from misc import * ----> 9 from basic import * 10 from decomp import * 11 from decomp_lu import * /usr/lib/python2.7/site-packages/scipy/linalg/basic.py in <module>() 12 13 from flinalg import get_flinalg_funcs ---> 14 from lapack import get_lapack_funcs 15 from misc import LinAlgError 16 from scipy.linalg import calc_lwork /usr/lib/python2.7/site-packages/scipy/linalg/lapack.py in <module>() 13 14 from scipy.linalg import flapack ---> 15 from scipy.linalg import clapack 16 _use_force_clapack = 1 17 if hasattr(clapack,'empty_module'): ImportError: /usr/lib/python2.7/site-packages/scipy/linalg/clapack.so: undefined symbol: clapack_sgesv
Same thing happens using straight python shell jm_python.sh: $ cat /usr/local/bin/jm_python.sh #!/bin/sh if test "${JAVA_HOME}" = ""; then export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/ fi JMODELICA_HOME=/usr/local/jmodelica \ IPOPT_HOME=/usr \ CPPAD_HOME=/home/jrwebb/src/JModelica/ThirdParty/CppAD/cppad-20100325/ \ SUNDIALS_HOME=/usr/local \ PYTHONPATH=:/usr/local/jmodelica/Python/ \ LD_LIBRARY_PATH=:/usr/lib:/usr/local/lib \ python $@
I still have no chance to reproduce this (also not in ipython): $ ipython Python 2.7.1 (r271:86832, Apr 12 2011, 16:15:16) Type "copyright", "credits" or "license" for more information. IPython 0.10.2 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more. In [1]: from scipy.linalg import clapack In [2]: dir() Out[2]: ['In', 'Out', '_', '__', '__IP', '___', '__builtins__', '__name__', '__package__', '_dh', '_i', '_i1', '_i2', '_ih', '_ii', '_iii', '_ip', '_oh', '_sh', 'clapack', 'help'] In [3]: The symbol is defined here in atlas/liblapack.so, maybe you have another liblapack.so that's found first, where it's not defined. Could you please run: $ rpm -qa | grep atlas $ rpm -qa | grep lapack
$ rpm -qa|grep atlas atlas-sse3-3.8.3-18.fc15.i686 atlas-sse3-devel-3.8.3-18.fc15.i686 $ rpm -qa|grep lapack lapack-devel-3.2.2-3.fc15.i686 lapack-static-3.2.2-3.fc15.i686 lapack-3.2.2-3.fc15.i686 scipy requires atlas. ld.so.conf is pulling atlas in over lapack. $ ldd /usr/lib/python2.7/site-packages/scipy/linalg/clapack.so linux-gate.so.1 => (0x00336000) liblapack.so.3 => /usr/lib/atlas-sse3/liblapack.so.3 (0x007f3000) libptf77blas.so.3 => /usr/lib/atlas-sse3/libptf77blas.so.3 (0x0036a000) libptcblas.so.3 => /usr/lib/atlas-sse3/libptcblas.so.3 (0x001e5000) libatlas.so.3 => /usr/lib/atlas-sse3/libatlas.so.3 (0x003a4000) ... If module is looking for clapack routine, why is module only linking in lapack instead of clapack library? $ rpm -ql atlas-sse3 /etc/ld.so.conf.d/atlas-i386-sse3.conf /usr/lib/atlas-sse3 /usr/lib/atlas-sse3/libatlas.so.3 /usr/lib/atlas-sse3/libatlas.so.3.0 /usr/lib/atlas-sse3/libcblas.so.3 /usr/lib/atlas-sse3/libcblas.so.3.0 /usr/lib/atlas-sse3/libclapack.so.3 /usr/lib/atlas-sse3/libclapack.so.3.0 /usr/lib/atlas-sse3/libf77blas.so.3 /usr/lib/atlas-sse3/libf77blas.so.3.0 /usr/lib/atlas-sse3/liblapack.so.3 /usr/lib/atlas-sse3/liblapack.so.3.0 ...
Well, in /usr/lib/atlas-sse3/liblapack.so.3 there is also a clapack_sgesv. Maybe jmodelica changes the search path, so lapack directly is found first? It's strange, that pure python can import it correctly, but nothing else works for you...
You are right. It was staring me in the face the whole time. The startup script sets LD_LIBRARY_PATH=:/usr/lib:/usr/local/lib. I added /usr/lib/atlas-sse3 before /usr/lib and problem went away. Thanks for help. This ticket can be closed. Not a problem with packages. Problem with the user.
No problem :) Could have seen it too in comment #5^^