gimli icon indicating copy to clipboard operation
gimli copied to clipboard

Error in installing pygimli in mac M1

Open makeabhishek opened this issue 1 year ago • 4 comments

Problem description

Error in importing pygimli. I installed pygimli in mac m1 max, but importing pygimli is giving error. I also tried to install by CONDA_SUBDIR=osx-arm64 conda create -n pg -c gimli -c conda-forge pygimli=1.4.5 . But same issue

Your environment

Operating system: MacOS Monterey version 12.7.1 Chip Apple M1 Max Python version: 3.11.6 pyGIMLi version: Output of print(pygimli.__version__) NameError: name 'pygimli' is not defined

Way of installation: e.g. Conda package, manual compilation from source, etc. conda create -n pg -c gimli -c conda-forge pygimli=1.4.

Installation goes successfull

Proceed ([y]/n)? y


Downloading and Extracting Packages

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate pg
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Steps to reproduce

Tell us how to reproduce this issue. Ideally, you could paste the code that produces the error:

(pg) asaini@pn2301151 ~ % python -c "import pygimli; pygimli.test(show=False, onlydoctests=True)"
dlopen(/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/_pygimli_.so, 0x0002): Library not loaded: '@rpath/libcholmod.3.dylib'
  Referenced from: '/opt/anaconda3/envs/pg/lib/libgimli.dylib'
  Reason: tried: '/opt/anaconda3/envs/pg/lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/usr/local/lib/libcholmod.3.dylib' (no such file), '/usr/lib/libcholmod.3.dylib' (no such file)
Traceback (most recent call last):
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/core.py", line 11, in <module>
    from . import _pygimli_  # if it works: as pgcore, replace all _pygimli_
    ^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name '_pygimli_' from partially initialized module 'pygimli.core' (most likely due to a circular import) (/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/__init__.py", line 20, in <module>
    from ._pygimli_ import *
ImportError: dlopen(/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/_pygimli_.so, 0x0002): Library not loaded: '@rpath/libcholmod.3.dylib'
  Referenced from: '/opt/anaconda3/envs/pg/lib/libgimli.dylib'
  Reason: tried: '/opt/anaconda3/envs/pg/lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/usr/local/lib/libcholmod.3.dylib' (no such file), '/usr/lib/libcholmod.3.dylib' (no such file)
ERROR: cannot import the library '_pygimli_'.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/__init__.py", line 8, in <module>
    from .core.decorators import (renamed, singleton, moduleProperty,
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/__init__.py", line 14, in <module>
    from .base import (isInt, isScalar, isIterable, isArray, isPos, isR3Array,
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/base.py", line 7, in <module>
    from .core import (RVector3, R3Vector, RMatrix)
ImportError: cannot import name 'RVector3' from 'pygimli.core.core' (/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/core.py)
(pg) asaini@pn2301151 ~ % 
...

makeabhishek avatar Nov 19 '23 18:11 makeabhishek

Dear @makeabhishek,

can you please try with pygimli 1.4.6 again?

Best wishes for the new year Florian

florian-wagner avatar Dec 31 '23 10:12 florian-wagner

Dear @florian-wagner

Tried to install but still getting following error.

Verifying transaction: done                                                     
Executing transaction: done                                                                                                
                                                                            
(base) asaini@pn2301151 ~ % conda activate pg
(pg) asaini@pn2301151 ~ % python -c "import pygimli; pygimli.test(show=False, onlydoctests=True)"  
dlopen(/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/_pygimli_.so, 0x0002): Library not loaded: '@rpath/libcholmod.3.dylib'
  Referenced from: '/opt/anaconda3/envs/pg/lib/libgimli.dylib'
  Reason: tried: '/opt/anaconda3/envs/pg/lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/usr/local/lib/libcholmod.3.dylib' (no such file), '/usr/lib/libcholmod.3.dylib' (no such file)
Traceback (most recent call last):
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/core.py", line 11, in <module>
    from . import _pygimli_  # if it works: as pgcore, replace all _pygimli_
    ^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name '_pygimli_' from partially initialized module 'pygimli.core' (most likely due to a circular import) (/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/__init__.py", line 20, in <module>
    from ._pygimli_ import *
ImportError: dlopen(/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/_pygimli_.so, 0x0002): Library not loaded: '@rpath/libcholmod.3.dylib'
  Referenced from: '/opt/anaconda3/envs/pg/lib/libgimli.dylib'
  Reason: tried: '/opt/anaconda3/envs/pg/lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pgcore/../../../../lib64/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/opt/anaconda3/envs/pg/bin/../lib/libcholmod.3.dylib' (no such file), '/usr/local/lib/libcholmod.3.dylib' (no such file), '/usr/lib/libcholmod.3.dylib' (no such file)
ERROR: cannot import the library '_pygimli_'.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/__init__.py", line 8, in <module>
    from .core.decorators import (renamed, singleton, moduleProperty,
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/__init__.py", line 14, in <module>
    from .base import (isInt, isScalar, isIterable, isArray, isPos, isR3Array,
  File "/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/base.py", line 7, in <module>
    from .core import (RVector3, R3Vector, RMatrix)
ImportError: cannot import name 'RVector3' from 'pygimli.core.core' (/opt/anaconda3/envs/pg/lib/python3.11/site-packages/pygimli/core/core.py)

makeabhishek avatar Jan 21 '24 19:01 makeabhishek

I just had the same issue on an M3 Macbook.

pygimli tries to load shared libraries, like, e.g., libcholmod.3.dylib and libumfpack.5.dylib, but can't find them (no such file).

I inspected the directory where the libraries are installed. In my case there have been newer version than those expected by pygimli. I solved the problem by adding symbolic links pointing to the already installed versions.

Example:

In the directory $HOME/miniconda3/envs/pg/lib (adapt the path to your specific case) do the following:

Note the release of the installed libraries:

ls -l libumfpack.*.dylib

Look for, e.g., libumfpack.6.0.1.dylib, then make a symbolic link to the version required by pygimli (which is the missing file in the runtime error message). So, if 'libumfpack.5.dylib' is not found, but version 6.0.1 is available, then type

ln -s libumfpack.6.0.1.dylib libumfpack.5.dylib

Repeat these steps for libcholmod.*.dylib

This has solved my problem in some brute-force manner. The reason seems to be a side effect from some other packages' requirements.

Cheers, Ralph

ruboerner avatar Feb 09 '24 09:02 ruboerner

Dear @ruboerner,

thank you for the valuable feedback. Hardlinking to specific versions of umfpack and cholmod should not be necessary. We have have to fix this from our side.

And: Congratulations on the M3!

Florian

florian-wagner avatar Feb 09 '24 10:02 florian-wagner