Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conda 3.9 is not working with numpy on macOS ("Reason: Image not found")?

I just installed a python3.9 environment for conda. It works for base python but apparently not for numpy. The error is "Reason: Image not found":

The installation of numpy had been successful:

conda install numpy


The following NEW packages will be INSTALLED:

  blas               conda-forge/osx-64::blas-2.106-openblas
  libblas            conda-forge/osx-64::libblas-3.9.0-6_openblas
  libcblas           conda-forge/osx-64::libcblas-3.9.0-6_openblas
  libgfortran        conda-forge/osx-64::libgfortran-5.0.0-9_3_0_h6c81a4c_18
  libgfortran5       conda-forge/osx-64::libgfortran5-9.3.0-h6c81a4c_18
  liblapack          conda-forge/osx-64::liblapack-3.9.0-6_openblas
  liblapacke         conda-forge/osx-64::liblapacke-3.9.0-6_openblas
  libopenblas        conda-forge/osx-64::libopenblas-0.3.12-openmp_h54245bb_1
  llvm-openmp        conda-forge/osx-64::llvm-openmp-11.0.1-h7c73e74_0
  numpy              pkgs/main/osx-64::numpy-1.19.2-py39h0fa1045_0
  numpy-base         pkgs/main/osx-64::numpy-base-1.19.2-py39h3a452eb_0


Proceed ([y]/n)? 

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

The installation conda install ipython was also successful. But ipython is not working:

$ipython
Python 3.9.1 (default, Dec 11 2020, 06:28:49) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.20.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import numpy as np
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
~/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/__init__.py in <module>
     21 try:
---> 22     from . import multiarray
     23 except ImportError as exc:

~/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/multiarray.py in <module>
     11 
---> 12 from . import overrides
     13 from . import _multiarray_umath

~/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/overrides.py in <module>
      6 
----> 7 from numpy.core._multiarray_umath import (
      8     add_docstring, implement_array_function, _get_implementing_args)


ImportError: dlopen(/Users/steve/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so, 2): Library not loaded: @rpath/libopenblas.dylib
  Referenced from: /Users/steve/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so
  Reason: image not found

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-1-0aa0b027fcb6> in <module>
----> 1 import numpy as np

~/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/__init__.py in <module>
    138     from . import _distributor_init
    139 
--> 140     from . import core
    141     from .core import *
    142     from . import compat

~/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/__init__.py in <module>
     46 """ % (sys.version_info[0], sys.version_info[1], sys.executable,
     47         __version__, exc)
---> 48     raise ImportError(msg)
     49 finally:
     50     for envkey in env_added:

ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.9 from "/Users/steve/miniconda3/envs/python39/bin/python"
  * The NumPy version is: "1.19.2"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: dlopen(/Users/steve/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so, 2): Library not loaded: @rpath/libopenblas.dylib
  Referenced from: /Users/steve/miniconda3/envs/python39/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so
  Reason: image not found

I am on macOS Catalina.

like image 802
WestCoastProjects Avatar asked Feb 24 '21 16:02

WestCoastProjects


1 Answers

Channel Mixing: Incompatible Binaries

One possible issues is channel mixing. Different channels often use different build stacks, which can result in referencing different symbols in linked libraries. In this case, try ensuring everything comes from conda-forge, e.g.

conda install -c conda-forge conda-forge::numpy

Longer term, maybe consider adding conda-forge to the global channels configuration and possibly setting priority to "strict". See conda config --describe channels channel_priority. Also, the --env flag can be useful for changing such settings in an environment specific way.

like image 190
merv Avatar answered Nov 03 '22 21:11

merv