PyWavelets / pywt

PyWavelets - Wavelet Transforms in Python
http://pywavelets.readthedocs.org
MIT License
1.97k stars 460 forks source link

build broken by setuptools 65.0 #645

Closed tacaswell closed 1 year ago

tacaswell commented 1 year ago

https://github.com/pypa/setuptools/pull/3505 removed the modules for interacting with the (very) old msvc compliers, however numpy.distutils unconditionally imports distutils.msvccompiler which in turn breaks install pywt.

I think this is the relevant part of the build log:

      running build_clib
      building 'c_wt' library
      Traceback (most recent call last):
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
          main()
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 261, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/build_meta.py", line 404, in build_wheel
          return self._build_with_temp_dir(['bdist_wheel'], '.whl',
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/build_meta.py", line 389, in _build_with_temp_dir
          self.run_setup()
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/build_meta.py", line 475, in run_setup
          self).run_setup(setup_script=setup_script)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/build_meta.py", line 334, in run_setup
          exec(code, locals())
        File "<string>", line 478, in <module>
        File "<string>", line 474, in setup_package
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/__init__.py", line 87, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 973, in run_commands
          self.run_command(cmd)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/dist.py", line 1217, in run_command
          super().run_command(command)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 992, in run_command
          cmd_obj.run()
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/wheel/bdist_wheel.py", line 322, in run
          self.run_command("build")
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 319, in run_command
          self.distribution.run_command(command)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/dist.py", line 1217, in run_command
          super().run_command(command)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 992, in run_command
          cmd_obj.run()
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 319, in run_command
          self.distribution.run_command(command)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/dist.py", line 1217, in run_command
          super().run_command(command)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 992, in run_command
          cmd_obj.run()
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/_distutils/command/build_clib.py", line 112, in run
          self.build_libraries(self.libraries)
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/setuptools/command/build_clib.py", line 84, in build_libraries
          self.compiler.compile(
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/numpy/distutils/ccompiler.py", line 89, in <lambda>
          m = lambda self, *args, **kw: func(self, *args, **kw)
                                        ^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/numpy/distutils/ccompiler.py", line 272, in CCompiler_compile
          jobs = get_num_build_jobs()
                 ^^^^^^^^^^^^^^^^^^^^
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/numpy/distutils/misc_util.py", line 91, in get_num_build_jobs
          from numpy.distutils.core import get_distribution
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/numpy/distutils/core.py", line 24, in <module>
          from numpy.distutils.command import config, config_compiler, \
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/numpy/distutils/command/config.py", line 19, in <module>
          from numpy.distutils.mingw32ccompiler import generate_manifest
        File "/home/tcaswell/.virtualenvs/dd311/lib/python3.11/site-packages/numpy/distutils/mingw32ccompiler.py", line 28, in <module>
          from distutils.msvccompiler import get_build_version as get_build_msvc_version
      ModuleNotFoundError: No module named 'distutils.msvccompiler'
      [end of output]
rgommers commented 1 year ago

Thanks for the report @tacaswell. This is not surprising. It may still be reverted, but we need to do a release soon anyway to support Python 3.11 (RC1 is out so we can upload wheels), so may take this one along by adding an appropriate upper bound on setuptools version.

@grlee77 it looks like we have nothing else pressing for 1.4.0. What do you think about doing a release later this week or next week?

grlee77 commented 1 year ago

Sure, that sounds good. I may be able to take a look this weekend

rgommers commented 1 year ago

The breakage is fixed in setuptools 65.0.2, so less of a problem. We should still put in an upper bound and do a release in the near future with Python 3.11 wheels though, to avoid scikit-image & co becoming blocked by not having PyWavelets wheels.

grlee77 commented 1 year ago

I have a bit of time this weekend. I just opened #647 to pin setuptools and will also take a look at updating to test and build for Python 3.11