Any idea on how can I solve this issue? I really need to install pyfftw into a conda environment, which already has the other libraries I need, such as tensorflow. Up until know, I could only install the other libraries correctly (namely tensorflow) for python 3.9. I'm working on a Mac M1. Here is the error output for the command pip install pyfftw:
Collecting pyfftw
Using cached pyFFTW-0.12.0.tar.gz (137 kB)
Requirement already satisfied: numpy<2.0,>=1.10 in /Users/mymac/miniforge3/envs/tf/lib/python3.9/site-packages (from pyfftw) (1.19.5)
Building wheels for collected packages: pyfftw
Building wheel for pyfftw (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /Users/mymac/miniforge3/envs/tf/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/setup.py'"'"'; __file__='"'"'/private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-wheel-6urq200p
cwd: /private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/
Complete output (25 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-11.0-arm64-3.9
creating build/lib.macosx-11.0-arm64-3.9/pyfftw
copying pyfftw/config.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw
copying pyfftw/_version.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw
copying pyfftw/__init__.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw
creating build/lib.macosx-11.0-arm64-3.9/pyfftw/builders
copying pyfftw/builders/builders.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/builders
copying pyfftw/builders/__init__.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/builders
copying pyfftw/builders/_utils.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/builders
creating build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/cache.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/__init__.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/scipy_fft.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/dask_fft.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/numpy_fft.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/scipy_fftpack.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
copying pyfftw/interfaces/_utils.py -> build/lib.macosx-11.0-arm64-3.9/pyfftw/interfaces
UPDATING build/lib.macosx-11.0-arm64-3.9/pyfftw/_version.py
set build/lib.macosx-11.0-arm64-3.9/pyfftw/_version.py to '0.12.0'
running build_ext
error: Could not find the FFTW header 'fftw3.h'
----------------------------------------
ERROR: Failed building wheel for pyfftw
Running setup.py clean for pyfftw
Failed to build pyfftw
Installing collected packages: pyfftw
Running setup.py install for pyfftw ... error
ERROR: Command errored out with exit status 1:
command: /Users/mymac/miniforge3/envs/tf/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/setup.py'"'"'; __file__='"'"'/private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-record-qt54h1vj/install-record.txt --single-version-externally-managed --compile --install-headers /Users/mymac/miniforge3/envs/tf/include/python3.9/pyfftw
cwd: /private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/
Complete output (7 lines):
running install
running build
running build_py
UPDATING build/lib.macosx-11.0-arm64-3.9/pyfftw/_version.py
set build/lib.macosx-11.0-arm64-3.9/pyfftw/_version.py to '0.12.0'
running build_ext
error: Could not find the FFTW header 'fftw3.h'
----------------------------------------
ERROR: Command errored out with exit status 1: /Users/mymac/miniforge3/envs/tf/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/setup.py'"'"'; __file__='"'"'/private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-install-5kpcegg9/pyfftw_56df32e267e3416fb4e9f01e6282e505/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/0k/hz9yngm56nz1htdc3c3t3d0c0000gn/T/pip-record-qt54h1vj/install-record.txt --single-version-externally-managed --compile --install-headers /Users/mymac/miniforge3/envs/tf/include/python3.9/pyfftw Check the logs for full command output.
The PyPA doesn't host a precompiled wheel for osx-arm64, so it is building from source. According to the documentation, when source building, one is required to have FFTW installed first. Fortunately, Conda Forge appears to be building this (including osx-arm64), so try
conda install -c conda-forge fftw
pip install pyfftw
Otherwise, I dropped an issue to the Conda Forge feedstock, noting that they should be capable of building an osx-arm64 build. Hopefully that will move forward and in the future one could avoid Pip and local compilation altogether.
UPDATE: the feedstock is now building for osx-arm64, so you should be able to use
conda install -c conda-forge pyfftw