Repository: scipy/scipy

Issue #13409: trouble installing on apple silicon M1
Created: 2021-01-21T05:12:24Z
EDIT: As of 2021-08-06, this solution seems to work for scipy 1.7.0 (native, not through rosetta):
brew install openblas
pip install cython pybind11 pythran numpy
OPENBLAS=$(brew --prefix openblas) CFLAGS="-falign-functions=8 ${CFLAGS}" pip install --no-use-pep517 scipy==1.7.0

Thanks goes to @lutzroder for the figuring out this solution
Hi there, I did not find any other issues related to this on here. I'm having some issues installing scipy on my M1 Macbook Air.
2020 Macbook Air M1
Mac OS Big Sur 11.0.1
khuynh@kmba:~ $ python3 --version
Python 3.9.1

Reproducing code example:

Install python3.9.1 on Mac OS through brew (natively, not x86):
brew install python@3.9

Install numpy (solution from this numpy issue):
OPENBLAS="$(brew --prefix openblas)" MACOSX_DEPLOYMENT_TARGET=11.1 python3 -m pip install numpy --no-use-pep517

Install pandas and matplotlib
python3 -m pip install matplotlib pandas

Try to install scipy:
python3 -m pip install scipy

Error message:

Error output (after successfully installing numpy, pandas, matplotlib):
khuynh@kmba:~ $ python3 -m pip install scipy
Collecting scipy
  Using cached scipy-1.6.0.tar.gz (27.3 MB)
  Installing build dependencies ... error
  ERROR: Command errored out with exit status 1:
   command: /opt/homebrew/opt/python@3.9/bin/python3.9 /opt/homebrew/lib/python3.9/site-packages/pip install --ignore-installed --no-user --prefix /private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-lm96mgjq/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- wheel 'setuptools<=51.0.0' 'Cython>=0.29.18' 'numpy==1.16.5; python_version=='"'"'3.7'"'"'' 'numpy==1.17.3; python_version=='"'"'3.8'"'"'' 'numpy==1.19.3; python_version=='"'"'3.9'"'"'' 'numpy; python_version>='"'"'3.10'"'"'' 'pybind11>=2.4.3'
       cwd: None
  Complete output (226 lines):
  Ignoring numpy: markers 'python_version == "3.7"' don't match your environment
  Ignoring numpy: markers 'python_version == "3.8"' don't match your environment
  Ignoring numpy: markers 'python_version >= "3.10"' don't match your environment
  Collecting numpy==1.19.3
    Using cached numpy-1.19.3.zip (7.3 MB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'done'
    Getting requirements to build wheel: started
    Getting requirements to build wheel: finished with status 'done'
      Preparing wheel metadata: started
      Preparing wheel metadata: finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: /opt/homebrew/opt/python@3.9/bin/python3.9 /opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/tmpbdr967n3
           cwd: /private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1
      Complete output (209 lines):
      Running from numpy source directory.
      setup.py:480: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
        run_build = parse_setuppy_commands()
      Processing numpy/random/_bounded_integers.pxd.in
      Processing numpy/random/_philox.pyx
      Processing numpy/random/_bounded_integers.pyx.in
      Processing numpy/random/_sfc64.pyx
      Processing numpy/random/_mt19937.pyx
      Processing numpy/random/bit_generator.pyx
      Processing numpy/random/mtrand.pyx
      Processing numpy/random/_generator.pyx
      Processing numpy/random/_pcg64.pyx
      Processing numpy/random/_common.pyx
      Cythonizing sources
      blas_opt_info:
      blas_mkl_info:
      customize UnixCCompiler
        libraries mkl_rt not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      blis_info:
        libraries blis not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      openblas_info:
        libraries openblas not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      atlas_3_10_blas_threads_info:
      Setting PTATLAS=ATLAS
        libraries tatlas not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      atlas_3_10_blas_info:
        libraries satlas not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      atlas_blas_threads_info:
      Setting PTATLAS=ATLAS
        libraries ptf77blas,ptcblas,atlas not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      atlas_blas_info:
        libraries f77blas,cblas,atlas not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      accelerate_info:
        libraries accelerate not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
      Library accelerate was not found. Ignoring
        libraries veclib not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
      Library veclib was not found. Ignoring
        FOUND:
          extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
          extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
          define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

        FOUND:
          extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
          extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
          define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

      non-existing path in 'numpy/distutils': 'site.cfg'
      lapack_opt_info:
      lapack_mkl_info:
        libraries mkl_rt not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      openblas_lapack_info:
        libraries openblas not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      openblas_clapack_info:
        libraries openblas,lapack not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      flame_info:
        libraries flame not found in ['/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE

      atlas_3_10_threads_info:
      Setting PTATLAS=ATLAS
        libraries lapack_atlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries tatlas,tatlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries tatlas,tatlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries tatlas,tatlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
        NOT AVAILABLE

      atlas_3_10_info:
        libraries lapack_atlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries satlas,satlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries satlas,satlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries satlas,satlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_3_10_info'>
        NOT AVAILABLE

      atlas_threads_info:
      Setting PTATLAS=ATLAS
        libraries lapack_atlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries ptf77blas,ptcblas,atlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries ptf77blas,ptcblas,atlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_threads_info'>
        NOT AVAILABLE

      atlas_info:
        libraries lapack_atlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries f77blas,cblas,atlas not found in /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries f77blas,cblas,atlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries f77blas,cblas,atlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_info'>
        NOT AVAILABLE

        FOUND:
          extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
          extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
          define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

      /opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
        warnings.warn(msg)
      running dist_info
      running build_src
      build_src
      building py_modules sources
      creating build
      creating build/src.macosx-11-arm64-3.9
      creating build/src.macosx-11-arm64-3.9/numpy
      creating build/src.macosx-11-arm64-3.9/numpy/distutils
      building library "npymath" sources
      Traceback (most recent call last):
        File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
          main()
        File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel
          return hook(metadata_directory, config_settings)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-u2e50a1f/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 157, in prepare_metadata_for_build_wheel
          self.run_setup()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-u2e50a1f/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 248, in run_setup
          super(_BuildMetaLegacyBackend,
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-u2e50a1f/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 142, in run_setup
          exec(compile(code, __file__, 'exec'), locals())
        File "setup.py", line 508, in <module>
          setup_package()
        File "setup.py", line 500, in setup_package
          setup(**metadata)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/core.py", line 169, in setup
          return old_setup(**new_attr)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-u2e50a1f/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 165, in setup
          return distutils.core.setup(**attrs)
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/core.py", line 148, in setup
          dist.run_commands()
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py", line 966, in run_commands
          self.run_command(cmd)
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-u2e50a1f/overlay/lib/python3.9/site-packages/setuptools/command/dist_info.py", line 31, in run
          egg_info.run()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/command/egg_info.py", line 24, in run
          self.run_command("build_src")
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/cmd.py", line 313, in run_command
          self.distribution.run_command(command)
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/command/build_src.py", line 144, in run
          self.build_sources()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/command/build_src.py", line 155, in build_sources
          self.build_library_sources(*libname_info)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/command/build_src.py", line 288, in build_library_sources
          sources = self.generate_sources(sources, (lib_name, build_info))
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/command/build_src.py", line 378, in generate_sources
          source = func(extension, build_dir)
        File "numpy/core/setup.py", line 658, in get_mathlib_info
          st = config_cmd.try_link('int main(void) { return 0;}')
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/command/config.py", line 241, in try_link
          self._check_compiler()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/command/config.py", line 80, in _check_compiler
          self.fcompiler = new_fcompiler(compiler=self.fcompiler,
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/__init__.py", line 880, in new_fcompiler
          compiler = get_default_fcompiler(plat, requiref90=requiref90,
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/__init__.py", line 851, in get_default_fcompiler
          compiler_type =  _find_existing_fcompiler(matching_compiler_types,
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/__init__.py", line 802, in _find_existing_fcompiler
          c.customize(dist)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/__init__.py", line 526, in customize
          linker_so_flags = self.flag_vars.linker_so
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/environment.py", line 37, in __getattr__
          return self._get_var(name, conf_desc)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/environment.py", line 53, in _get_var
          var = self._hook_handler(name, hook)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/__init__.py", line 705, in _environment_hook
          return hook()
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/gnu.py", line 346, in get_flags_linker_so
          flags = GnuFCompiler.get_flags_linker_so(self)
        File "/private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-install-rxxkdkwc/numpy_f22187e5fa894f3cab417c6a812e04c1/numpy/distutils/fcompiler/gnu.py", line 136, in get_flags_linker_so
          os.environ['MACOSX_DEPLOYMENT_TARGET'] = target
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 684, in __setitem__
          value = self.encodevalue(value)
        File "/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 756, in encode
          raise TypeError("str expected, not %s" % type(value).__name__)
      TypeError: str expected, not int
      ----------------------------------------
  ERROR: Command errored out with exit status 1: /opt/homebrew/opt/python@3.9/bin/python3.9 /opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/tmpbdr967n3 Check the logs for full command output.
  ----------------------------------------
ERROR: Command errored out with exit status 1: /opt/homebrew/opt/python@3.9/bin/python3.9 /opt/homebrew/lib/python3.9/site-packages/pip install --ignore-installed --no-user --prefix /private/var/folders/jc/hrnrv7f1059b2dx2kvsf4wk80000gn/T/pip-build-env-lm96mgjq/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- wheel 'setuptools<=51.0.0' 'Cython>=0.29.18' 'numpy==1.16.5; python_version=='"'"'3.7'"'"'' 'numpy==1.17.3; python_version=='"'"'3.8'"'"'' 'numpy==1.19.3; python_version=='"'"'3.9'"'"'' 'numpy; python_version>='"'"'3.10'"'"'' 'pybind11>=2.4.3' Check the logs for full command output.

Scipy/Numpy/Python version information:

>>> import sys, numpy; print(numpy.__version__, sys.version_info)
1.19.5 sys.version_info(major=3, minor=9, micro=1, releaselevel='final', serial=0)

Duplicate issue #14011: can't install Scipy any version on Python 3.8.10, M1(macOS)
Created: 2021-05-09T20:54:44Z
My issue is about ...
Reproducing code example:

Sample code to reproduce the problem

Error message:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ...

Scipy/Numpy/Python version information:

Closing comment (2021-05-10T03:06:10Z): Duplicate of #13409