why can't MATLAB import this python library? -


i'd use http://www.losonczylab.org/sima/1.2/ within matlab.

i can run fine python.

i can import example dependencies in matlab.

$ /opt/local/bin/python  python 2.7.9 (default, dec 13 2014, 15:13:49)  [gcc 4.2.1 compatible apple llvm 6.0 (clang-600.0.56)] on darwin  type "help", "copyright", "credits" or "license" more information.  >>> sima import sequence  >>> sequence  <module 'sima.sequence' '/users/eflister/library/python/2.7/lib/python/site-packages/sima/sequence.pyc'>  >>> sima import imagingdataset  >>> imagingdataset  <class 'sima.imaging.imagingdataset'>  

in matlab:

>> pyversion /opt/local/bin/python  >> pyversion   version: '2.7'  executable: '/opt/local/library/frameworks/python.framework/versions/2.7/resources/python.app/cont...'  library: '/opt/local/library/frameworks/python.framework/versions/2.7/lib/libpython2.7.dylib'  home: '/opt/local/library/frameworks/python.framework/versions/2.7'  isloaded: 0   >> import py.picos.tools.available_solvers  >> available_solvers   ans =   python list no properties.   ['cvxopt', 'mosek7']   >> import py.numpy.empty  >> empty(0)   ans =   python ndarray properties:   t: [1x1 py.numpy.ndarray]  base: [1x1 py.nonetype]  ctypes: [1x1 py.numpy.core._internal._ctypes]  data: [1x0 py.buffer]  dtype: [1x1 py.numpy.dtype]  flags: [1x1 py.numpy.flagsobj]  flat: [1x1 py.numpy.flatiter]  imag: [1x1 py.numpy.ndarray]  itemsize: 8  nbytes: 0  ndim: 1  real: [1x1 py.numpy.ndarray]  shape: [1x1 py.tuple]  size: 0  strides: [1x1 py.tuple]   []   >> import py.sima.sequence  error using import  import argument 'py.sima.sequence' cannot found or cannot imported.   >> import py.sima.sequence  error using import  import argument 'py.sima.sequence' cannot found or cannot imported.   >> import py.sima.sequence.create  error using import  import argument 'py.sima.sequence.create' cannot found or cannot imported.   >> import py.sima.sequence.create  error using import  import argument 'py.sima.sequence.create' cannot found or cannot imported.   >> import py.sima.sequence  error using import  import argument 'py.sima.sequence' cannot found or cannot imported.   >> import py.sima.sequence  error using import  import argument 'py.sima.sequence' cannot found or cannot imported.   >> import py.sima.imagingdataset  error using import  import argument 'py.sima.imagingdataset' cannot found or cannot imported.   >> import py.sima.imagingdataset  error using import  import argument 'py.sima.imagingdataset' cannot found or cannot imported.   >> import py.sima  error using import  import argument 'py.sima' cannot found or cannot imported.  

how can figure out why sima can't imported?

sima on path:

>> pp = py.pprint.prettyprinter  pp =     python prettyprinter no properties.      <pprint.prettyprinter instance @ 0x129425bd8>  >> pp.pprint(py.sys.path) ['',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python27.zip',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/plat-darwin',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/plat-mac',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/lib-tk',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/lib-old',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/readline',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/lib-dynload',  '/users/eflister/library/python/2.7/lib/python/site-packages',  '/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages'] 

i came following tedious method find problem imports -- there better way?

  1. define module in http://www.mathworks.com/help/matlab/matlab_external/call-user-defined-custom-module.html
  2. copy in imports source files in library matlab won't load
  3. comment out suspect imports until matlab call module succeeds
  4. rename module , repeat (once loaded, matlab has restart see new changes)

i had 29 times isolate following problematic imports in sima. :)

from pil import image  skimage.measure import approximate_polygon skimage.measure import find_contours skimage.filter import threshold_otsu skimage import transform tf  sklearn.decomposition import fastica  import scipy.io scipy.stats import uniform scipy.linalg import inv scipy.sparse.linalg import eigsh, eigs scipy.sparse.linalg import inv scipy import ndimage scipy.ndimage import measurements  import cv2  # note following ok: scipy.linalg import eig, eigh, norm scipy import sparse multiprocessing import pool import multiprocessing.util util 

running code in python shows no import exceptions:

lines = """ import h5py pil import image  skimage.measure import approximate_polygon skimage.measure import find_contours skimage.filter import threshold_otsu skimage import transform tf  sklearn.decomposition import fastica  import scipy.io scipy.stats import uniform scipy.linalg import inv scipy.sparse.linalg import eigsh, eigs scipy.sparse.linalg import inv scipy import ndimage scipy.ndimage import measurements  import cv2 """  def tryimport(i):     try:         exec(i)     except importerror e:         print         print e         print  map(tryimport, filter(lambda x: len(x) > 0, lines.splitlines())) 

but in matlab, gives output:

import h5py cannot import name _errors  pil import image dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/pil/_imaging.so, 2): library not loaded: /opt/local/lib/libtiff.5.dylib   referenced from: /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/pil/_imaging.so   reason: incompatible library version: _imaging.so requires version 8.0.0 or later, libtiff.5.dylib provides version 6.0.0  skimage.measure import approximate_polygon cannot import name _ni_support  skimage.measure import find_contours cannot import name _ni_support  skimage.filter import threshold_otsu cannot import name _ni_support  skimage import transform tf cannot import name hough_ellipse  sklearn.decomposition import fastica dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/optimize/_lbfgsb.so, 2): symbol not found: __gfortran_transfer_character_write   referenced from: /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/optimize/_lbfgsb.so   expected in: /applications/matlab_r2015a.app/sys/os/maci64/libgfortran.3.dylib  in /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/optimize/_lbfgsb.so  import scipy.io cannot import name doccer  scipy.stats import uniform dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/_ufuncs.so, 2): symbol not found: __gfortran_stop_numeric_f08   referenced from: /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/_ufuncs.so   expected in: /applications/matlab_r2015a.app/sys/os/maci64/libgfortran.3.dylib  in /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/_ufuncs.so  scipy.sparse.linalg import eigsh, eigs dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so, 2): symbol not found: __gfortran_transfer_array_write   referenced from: /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so   expected in: /applications/matlab_r2015a.app/sys/os/maci64/libgfortran.3.dylib  in /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so  scipy.sparse.linalg import inv dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so, 2): symbol not found: __gfortran_transfer_array_write   referenced from: /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so   expected in: /applications/matlab_r2015a.app/sys/os/maci64/libgfortran.3.dylib  in /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so  scipy import ndimage cannot import name _ni_support  scipy.ndimage import measurements cannot import name _ni_support  import cv2 dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/cv2.so, 2): library not loaded: /opt/local/lib/libtiff.5.dylib   referenced from: /opt/local/lib/libopencv_highgui.2.4.dylib   reason: incompatible library version: libopencv_highgui.2.4.dylib requires version 8.0.0 or later, libtiff.5.dylib provides version 6.0.0 

i found method shows errors matlab:

>> py.importlib.import_module('sima') python error: cannot import name hough_ellipse 

so there hope in proceeding here?

i don't understand errors, best can surmise, of them are:

matlab's libtiff.5.dylib provides version 6.0.0, pil , opencv require >= 8.0.0

matlab's libgfortran.3.dylib doesn't work scipy's _lbfgsb.so, _ufuncs.so, _arpack.so

would there way compile scipy/pil/opencv against matlab's libraries?

would extremely painful? :)

i've found following 3rd party python-from-matlab bridges:

are there others consider? opinions/experience on promising scenario? i'm guessing matpy...

pymex no good

matpy no good:

>> py_shell py> import sima traceback (most recent call last):   file "<string>", line 1, in <module>   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/__init__.py", line 6, in <module>     sima.imaging import imagingdataset   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/imaging.py", line 26, in <module>     import h5py   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/h5py/__init__.py", line 23, in <module>     . import _conv   file "h5py/h5t.pxd", line 14, in init h5py._conv (/opt/local/var/macports/build/_opt_mports_dports_python_py-h5py/py27-h5py/work/h5py-2.5.0/h5py/_conv.c:6958)   file "h5py/h5t.pyx", line 139, in init h5py.h5t (/opt/local/var/macports/build/_opt_mports_dports_python_py-h5py/py27-h5py/work/h5py-2.5.0/h5py/h5t.c:20282)   file "h5py/h5t.pyx", line 73, in h5py.h5t.lockid (/opt/local/var/macports/build/_opt_mports_dports_python_py-h5py/py27-h5py/work/h5py-2.5.0/h5py/h5t.c:2562)   file "h5py/h5t.pyx", line 42, in h5py.h5t.typewrap (/opt/local/var/macports/build/_opt_mports_dports_python_py-h5py/py27-h5py/work/h5py-2.5.0/h5py/h5t.c:2196) runtimeerror: interface initialization failed (not datatype object) py> import sima traceback (most recent call last):   file "<string>", line 1, in <module>   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/__init__.py", line 6, in <module>     sima.imaging import imagingdataset   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/imaging.py", line 33, in <module>     import sima.misc   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/misc/__init__.py", line 21, in <module>     skimage import transform tf   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/skimage/transform/__init__.py", line 1, in <module>     ._hough_transform import (hough_ellipse, hough_line,   file "skimage/transform/_hough_transform.pyx", line 13, in init skimage.transform._hough_transform (skimage/transform/_hough_transform.c:22321)   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/skimage/draw/__init__.py", line 2, in <module>     .draw3d import ellipsoid, ellipsoid_stats   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/skimage/draw/draw3d.py", line 3, in <module>     scipy.special import (ellipkinc ellip_f, ellipeinc ellip_e)   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/__init__.py", line 586, in <module>     ._ufuncs import * importerror: dlopen(/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/_ufuncs.so, 2): symbol not found: __gfortran_stop_numeric_f08   referenced from: /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/_ufuncs.so   expected in: /applications/matlab_r2015a.app/sys/os/maci64/libgfortran.3.dylib  in /opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/scipy/special/_ufuncs.so py> import sima traceback (most recent call last):   file "<string>", line 1, in <module>   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/__init__.py", line 6, in <module>     sima.imaging import imagingdataset   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/imaging.py", line 33, in <module>     import sima.misc   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/misc/__init__.py", line 21, in <module>     skimage import transform tf   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/skimage/transform/__init__.py", line 1, in <module>     ._hough_transform import (hough_ellipse, hough_line, importerror: cannot import name hough_ellipse py> import sima traceback (most recent call last):   file "<string>", line 1, in <module>   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/__init__.py", line 6, in <module>     sima.imaging import imagingdataset   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/imaging.py", line 33, in <module>     import sima.misc   file "/users/eflister/library/python/2.7/lib/python/site-packages/sima/misc/__init__.py", line 21, in <module>     skimage import transform tf   file "/opt/local/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/skimage/transform/__init__.py", line 1, in <module>     ._hough_transform import (hough_ellipse, hough_line, importerror: cannot import name hough_ellipse py> import picos.tools py> print picos.tools.available_solvers() ['cvxopt', 'mosek7'] 

i'm starting think wormholing separate process sounds good...

but using ld_preload start matlab updated libgfortran , libtiff?

the versions want located:

/opt/local/lib/libgcc/libgfortran.3.dylib  /opt/local/lib/libtiff.5.dylib 

from within fresh matlab session, following didn't help.

>> setenv('dyld_library_path',['/opt/local/lib:' getenv('dyld_library_path')]) >> getenv('dyld_library_path')  ans =  /opt/local/lib:/applications/matlab_r2015a.app/sys/os/maci64:/applications/matlab_r2015a.app/bin/maci64/../../contents/macos:/applications/matlab_r2015a.app/bin/maci64:/applications/matlab_r2015a.app/extern/lib/maci64:/applications/matlab_r2015a.app/runtime/maci64:/applications/matlab_r2015a.app/sys/java/jre/maci64/jre/lib/./native_threads:/applications/matlab_r2015a.app/sys/java/jre/maci64/jre/lib/./server:/applications/matlab_r2015a.app/sys/java/jre/maci64/jre/lib/./lib/jli 

but!!!

~$ dyld_insert_libraries=/opt/local/lib/libgcc/libgfortran.3.dylib:/opt/local/lib/libtiff.5.dylib /applications/matlab_r2015a.app/bin/matlab 

solves import problems!!!

>> import py.sima error using import import argument 'py.sima' cannot found or cannot imported.  >> import py.sima.sequence % succeeds! >> import py.sima.imagingdataset % succeeds! >> x = py.sima.imagingdataset([1,2],'~') python error: imagingdataset objects must initialized list of sequences.  >> x = py.numpy.random.random([2,3,4])  x =     python ndarray properties:             t: [1x1 py.numpy.ndarray]         base: [1x1 py.nonetype]       ctypes: [1x1 py.numpy.core._internal._ctypes]         data: [1x192 py.buffer]        dtype: [1x1 py.numpy.dtype]        flags: [1x1 py.numpy.flagsobj]         flat: [1x1 py.numpy.flatiter]         imag: [1x1 py.numpy.ndarray]     itemsize: 8       nbytes: 192         ndim: 3         real: [1x1 py.numpy.ndarray]        shape: [1x3 py.tuple]         size: 24      strides: [1x3 py.tuple]      [[[ 0.4158531   0.18912596  0.20743597  0.92631168]       [ 0.0371785   0.48093953  0.88221637  0.85687334]       [ 0.2267605   0.79464779  0.97438662  0.47791076]]       [[ 0.05602249  0.06596678  0.05691491  0.02706325]       [ 0.28477145  0.74781928  0.56700236  0.14500885]       [ 0.87999554  0.78932748  0.24473039  0.18383564]]]  >> x = py.sima.sequence.create('ndarray',x) class "py.sima.sequence" undefined. perhaps java not running.  >> py.sima.segment.stica()  ans =     python stica no properties.      <sima.segment.stica.stica object @ 0x138e15890>  >> py.sima.segment.planeca1pc()  ans =     python planeca1pc no properties.      <sima.segment.ca1pc.planeca1pc object @ 0x138e158d0> 

we close. why can't sima.sequence.create() run!??!

a: matlab has set of explicit limits support / not support in python code & classes

while both wish & work together, recognised, matlab not support python without limits.

matlab has explicitly listed features, not support. 1 of them support object-names starting underscore character.

many of error messages, have posted, confirm fact.

more on un-supported features can checked in >>> limitations python support

going through list shows, how immense budget pay in case re-engineer / re-design packages, non-conform these un-supported features.

what this?

if indeed heavily dependent on dual-world matlab/python, might become interested architecture of how make things work.

try integrate process-to-process messaging via zeromq et al, , start using distributed processing, using native ( working ) modules on each side.

would faster trial/error on imports, never fly.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -