pavlin-policar / openTSNE

Extensible, parallel implementations of t-SNE
https://opentsne.rtfd.io
BSD 3-Clause "New" or "Revised" License
1.42k stars 157 forks source link

Cannot install on Mac M1 #248

Closed bravma closed 11 months ago

bravma commented 11 months ago

I have troubles installing openTSNE on my Mac M1 using docker. I run the following code:

docker run -it python:3.9.10 pip3 install opentsne

which results in the following error:

#0 17.11   × Building wheel for openTSNE (pyproject.toml) did not run successfully.
#0 17.11   │ exit code: 1
#0 17.11   ╰─> [103 lines of output]
#0 17.11       FFTW3 header files found. Using FFTW implementation of FFT.
#0 17.11       running bdist_wheel
#0 17.11       running build
#0 17.11       running build_py
#0 17.11       creating build
#0 17.11       creating build/lib.linux-aarch64-cpython-39
#0 17.11       creating build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/version.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/sklearn.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/initialization.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/metrics.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/callbacks.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/tsne.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/__init__.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/utils.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/affinity.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       copying openTSNE/nearest_neighbors.py -> build/lib.linux-aarch64-cpython-39/openTSNE
#0 17.11       creating build/lib.linux-aarch64-cpython-39/openTSNE/dependencies
#0 17.11       copying openTSNE/dependencies/__init__.py -> build/lib.linux-aarch64-cpython-39/openTSNE/dependencies
#0 17.11       creating build/lib.linux-aarch64-cpython-39/openTSNE/_matrix_mul
#0 17.11       copying openTSNE/_matrix_mul/__init__.py -> build/lib.linux-aarch64-cpython-39/openTSNE/_matrix_mul
#0 17.11       creating build/lib.linux-aarch64-cpython-39/openTSNE/dependencies/annoy
#0 17.11       copying openTSNE/dependencies/annoy/__init__.py -> build/lib.linux-aarch64-cpython-39/openTSNE/dependencies/annoy
#0 17.11       running build_ext
#0 17.11       gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include -I/usr/local/Library/include -c ./tmpzzs8kfpq/omp.c -o ./tmpzzs8kfpq/omp.o
#0 17.11       Found openmp. Compiling with openmp flags...
#0 17.11       Traceback (most recent call last):
#0 17.11         File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
#0 17.11           main()
#0 17.11         File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
#0 17.11           json_out['return_val'] = hook(**hook_input['kwargs'])
#0 17.11         File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
#0 17.11           return _build_backend().build_wheel(wheel_directory, config_settings,
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 434, in build_wheel
#0 17.11           return self._build_with_temp_dir(
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 419, in _build_with_temp_dir
#0 17.11           self.run_setup()
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 341, in run_setup
#0 17.11           exec(code, locals())
#0 17.11         File "<string>", line 268, in <module>
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 107, in setup
#0 17.11           return distutils.core.setup(**attrs)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 185, in setup
#0 17.11           return run_commands(dist)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
#0 17.11           dist.run_commands()
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
#0 17.11           self.run_command(cmd)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1233, in run_command
#0 17.11           super().run_command(command)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 17.11           cmd_obj.run()
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/wheel/bdist_wheel.py", line 349, in run
#0 17.11           self.run_command("build")
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
#0 17.11           self.distribution.run_command(command)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1233, in run_command
#0 17.11           super().run_command(command)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 17.11           cmd_obj.run()
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build.py", line 131, in run
#0 17.11           self.run_command(cmd_name)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
#0 17.11           self.distribution.run_command(command)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1233, in run_command
#0 17.11           super().run_command(command)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 17.11           cmd_obj.run()
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in run
#0 17.11           self.build_extensions()
#0 17.11         File "<string>", line 211, in build_extensions
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensions
#0 17.11           self._build_extensions_serial()
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serial
#0 17.11           self.build_extension(ext)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Distutils/build_ext.py", line 122, in build_extension
#0 17.11           new_ext = cythonize(
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 990, in cythonize
#0 17.11           module_list, module_metadata = create_extension_list(
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 839, in create_extension_list
#0 17.11           kwds = deps.distutils_info(file, aliases, base).values
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 691, in distutils_info
#0 17.11           return (self.transitive_merge(filename, self.distutils_info0, DistutilsInfo.merge)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 700, in transitive_merge
#0 17.11           return self.transitive_merge_helper(
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 712, in transitive_merge_helper
#0 17.11           for next in outgoing(node):
#0 17.11         File "Cython/Utils.py", line 129, in Cython.Utils.cached_method.wrapper
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 613, in cimported_files
#0 17.11           pxd_file = self.find_pxd(module, filename)
#0 17.11         File "Cython/Utils.py", line 129, in Cython.Utils.cached_method.wrapper
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 594, in find_pxd
#0 17.11           pxd = self.context.find_pxd_file(relative, source_file_path=filename)
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Compiler/Main.py", line 281, in find_pxd_file
#0 17.11           pxd = self.search_include_directories(
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Compiler/Main.py", line 309, in search_include_directories
#0 17.11           return search_include_directories(
#0 17.11         File "Cython/Utils.py", line 90, in Cython.Utils.cached_function.wrapper
#0 17.11         File "/tmp/pip-build-env-vclcfgb9/overlay/lib/python3.9/site-packages/Cython/Compiler/Main.py", line 702, in search_include_directories
#0 17.11           path = os.path.join(dirname, dotted_filename)
#0 17.11         File "/usr/local/lib/python3.9/posixpath.py", line 76, in join
#0 17.11           a = os.fspath(a)
#0 17.11       TypeError: expected str, bytes or os.PathLike object, not get_numpy_include
#0 17.11       [end of output]
#0 17.11   
#0 17.11   note: This error originates from a subprocess, and is likely not a problem with pip.
#0 17.11   ERROR: Failed building wheel for openTSNE
#0 17.11 Failed to build openTSNE
#0 17.11 ERROR: Could not build wheels for openTSNE, which is required to install pyproject.toml-based projects

Has anyone else encountered this error?

pavlin-policar commented 11 months ago

Yeah, we were running into a similar issue in #246 with failing tests. This issue should be fixed in the latest master with #249.