tlecomte / friture

Real-time audio visualizations (spectrum, spectrogram, etc.)
http://friture.org
GNU General Public License v3.0
937 stars 161 forks source link

Python 3.10 support (building) #206

Closed imyxh closed 2 years ago

imyxh commented 2 years ago

Hi! Thanks for writing this great software.

I'm sorry to bother you with simple versioning issues, but I can't build friture on Arch Linux using python 3.10.1-2, due to an error building the Numpy C-extensions.

See below:

install logs ``` Running setup.py develop for friture ERROR: Command errored out with exit status 1: command: ./friture/buildenv/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'./friture/setup.py'"'"'; __file__='"'"'./friture/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'"'"'))' develop --no-deps cwd: ./friture/ Complete output (86 lines): ./friture/buildenv/lib/python3.10/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer. warnings.warn( running develop ./friture/buildenv/lib/python3.10/site-packages/setuptools/command/easy_install.py:156: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( ./friture/buildenv/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running egg_info creating friture.egg-info writing manifest file 'friture.egg-info/SOURCES.txt' warning: no files found matching 'INSTALL.txt' warning: no files found matching 'TODO.txt' warning: no files found matching 'friture.py' writing manifest file 'friture.egg-info/SOURCES.txt' running build_ext Traceback (most recent call last): File "./friture/buildenv/lib/python3.10/site-packages/numpy/core/__init__.py", line 22, in from . import multiarray File "./friture/buildenv/lib/python3.10/site-packages/numpy/core/multiarray.py", line 12, in from . import overrides File "./friture/buildenv/lib/python3.10/site-packages/numpy/core/overrides.py", line 7, in from numpy.core._multiarray_umath import ( ImportError: ./friture/buildenv/lib/python3.10/site-packages/numpy/core/_multiarray_umath.cpython-310-x86_64-linux-gnu.so: undefined symbol: cblas_sgemm During handling of the above exception, another exception occurred: Traceback (most recent call last): File "", line 1, in File "./friture/setup.py", line 68, in setup(name="friture", File "./friture/buildenv/lib/python3.10/site-packages/setuptools/__init__.py", line 153, in setup return distutils.core.setup(**attrs) File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 148, in setup return run_commands(dist) File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 163, in run_commands dist.run_commands() File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 967, in run_commands self.run_command(cmd) File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 986, in run_command cmd_obj.run() File "./friture/buildenv/lib/python3.10/site-packages/setuptools/command/develop.py", line 34, in run self.install_for_development() File "./friture/buildenv/lib/python3.10/site-packages/setuptools/command/develop.py", line 114, in install_for_development self.run_command('build_ext') File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 986, in run_command cmd_obj.run() File "./friture/buildenv/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 79, in run _build_ext.run(self) File "./friture/.eggs/Cython-0.29.24-py3.10.egg/Cython/Distutils/old_build_ext.py", line 186, in run _build_ext.build_ext.run(self) File "./friture/buildenv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 339, in run self.build_extensions() File "./friture/.eggs/Cython-0.29.24-py3.10.egg/Cython/Distutils/old_build_ext.py", line 193, in build_extensions ext.sources = self.cython_sources(ext.sources, ext) File "./friture/.eggs/Cython-0.29.24-py3.10.egg/Cython/Distutils/old_build_ext.py", line 265, in cython_sources extension.include_dirs = list(extension.include_dirs) File "./friture/setup.py", line 32, in include_dirs import numpy File "./friture/buildenv/lib/python3.10/site-packages/numpy/__init__.py", line 150, in from . import core File "./friture/buildenv/lib/python3.10/site-packages/numpy/core/__init__.py", line 48, in raise ImportError(msg) 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.10 from "./friture/buildenv/bin/python" * The NumPy version is: "1.21.1" and make sure that they are the versions you expect. Please carefully study the documentation linked above for further help. Original error was: ./friture/buildenv/lib/python3.10/site-packages/numpy/core/_multiarray_umath.cpython-310-x86_64-linux-gnu.so: undefined symbol: cblas_sgemm ---------------------------------------- ERROR: Command errored out with exit status 1: ./friture/buildenv/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'./friture/setup.py'"'"'; __file__='"'"'./friture/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'"'"'))' develop --no-deps Check the logs for full command output. ```

It seems this is an issue of simply changing the required package versions for Numpy and maybe some other packages. When I changed the requirements in setup.py and friture.egg-info/requires.txt to use >= instead of ==:

install_requires = [
    "sounddevice>=0.4.2",
    "rtmixer>=0.1.3",
    "docutils>=0.17.1",
    "numpy>=1.21.1",
    "PyQt5>=5.15.4",
    "appdirs>=1.4.4",
    "pyrr>=0.10.3",
]
# Cython and numpy are needed when running setup.py, to build extensions
setup_requires=["numpy>=1.21.1", "Cython>=0.29.24"]

then everything builds perfectly, but the app fails to run due to #204.