I found this issue with my local Python project since I just upgraded
my testing system to python3 3.10.4-1, which now makes python3.10 the
default Python.
I then tested with this simple example repository:
https://github.com/pypa/sampleproject
Steps to reproduce:
1. Clone the above repository
2. Run `pip3 install --user .`
This is the result I observe:
Processing /<...>/sampleproject
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: peppercorn in /home/jdg/.local/lib/python3.10/site-packages (from sampleproject==2.0.0) (0.6)
Building wheels for collected packages: sampleproject
Building wheel for sampleproject (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for sampleproject (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [2011 lines of output]
running bdist_wheel
running build
running build_py
running install
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 94, in _load_sysconfig_schemes
for scheme in sysconfig.get_scheme_names()
File "/usr/lib/python3.10/sysconfig.py", line 583, in get_scheme_names
return tuple(sorted(_INSTALL_SCHEMES))
RecursionError: maximum recursion depth exceeded while calling a Python object
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
main()
File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 261, in build_wheel
return _build_backend().build_wheel(wheel_directory, config_settings,
File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 230, in build_wheel
return self._build_with_temp_dir(['bdist_wheel'], '.whl',
File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 215, in _build_with_temp_dir
self.run_setup()
File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 158, in run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 20, in <module>
setup(
File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 148, in setup
return run_commands(dist)
File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 163, in run_commands
dist.run_commands()
File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 967, in run_commands
self.run_command(cmd)
File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 986, in run_command
cmd_obj.run()
File "/usr/lib/python3/dist-packages/wheel/bdist_wheel.py", line 335, in run
self.run_command('install')
File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 985, in run_command
cmd_obj.ensure_finalized()
File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 107, in ensure_finalized
self.finalize_options()
File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 45, in finalize_options
orig.install.finalize_options(self)
File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 320, in finalize_options
self.finalize_unix()
File "/usr/lib/python3.10/_distutils_system_mod.py", line 59, in finalize_unix
super().finalize_unix()
File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 488, in finalize_unix
self.select_scheme("posix_prefix")
File "/usr/lib/python3.10/_distutils_system_mod.py", line 55, in select_scheme
super().select_scheme(name)
File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 522, in select_scheme
scheme = _load_schemes()[name]
File "/usr/lib/python3.10/_distutils_system_mod.py", line 137, in wrapped_load_schemes
_inject_headers(name, scheme)
File "/usr/lib/python3.10/_distutils_system_mod.py", line 125, in _inject_headers
scheme['headers'] = orig_install._load_schemes()['posix_prefix']['headers']
File "/usr/lib/python3.10/_distutils_system_mod.py", line 137, in wrapped_load_schemes
_inject_headers(name, scheme)
and then the last four lines repeat hundreds of times until:
File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 103, in _load_schemes
sysconfig_schemes = _load_sysconfig_schemes() or {}
File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 91, in _load_sysconfig_schemes
with contextlib.suppress(AttributeError):
File "/usr/lib/python3.10/contextlib.py", line 436, in __exit__
return exctype is not None and issubclass(exctype, self._exceptions)
RecursionError: maximum recursion depth exceeded in __subclasscheck__
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for sampleproject
Failed to build sampleproject
ERROR: Could not build wheels for sampleproject, which is required to install pyproject.toml-based projects
I get the same behaviour (obviously) with `python3.10 -m pip install
--user .` but `python3.9 -m pip install --user .` works fine:
$ python3.9 -m pip install --user .
Processing /<...>/sampleproject
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting peppercorn
Using cached peppercorn-0.6-py3-none-any.whl (4.8 kB)
Building wheels for collected packages: sampleproject
Building wheel for sampleproject (pyproject.toml) ... done
Created wheel for sampleproject: filename=sampleproject-2.0.0-py3-none-any.whl size=4225 sha256=2bc606f6e112f9a897f877416f8b471b9fdd9986e53fad88dafc2a11bbfdf6c1
Stored in directory: /tmp/pip-ephem-wheel-cache-xmhzpetx/wheels/81/80/ff/23c143a1a2de938d596153b57b2a71f1fb269f3e1007dab618
Successfully built sampleproject
Installing collected packages: peppercorn, sampleproject
Successfully installed peppercorn-0.6 sampleproject-2.0.0
So there is definitely some interaction of pip with python3.10 that is
not working well.
Deleting the pyproject.toml file allows pip to work with 3.10; this
file is minimal:
[build-system]
# These are the assumed default build requirements from pip:
# https://pip.pypa.io/en/stable/reference/pip/#pep-517-and-518-support
requires = ["setuptools>=43.0.0", "wheel"]
build-backend = "setuptools.build_meta"
I've not got further than that, unfortunately.
Best wishes,
Julian
-- System Information:
Debian Release: bookworm/sid
APT prefers stable-security
APT policy: (500, 'stable-security'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.17.0-1-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_GB.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages python3-pip depends on:
ii ca-certificates 20211016
ii python3 3.10.4-1
ii python3-distutils 3.9.12-1
ii python3-setuptools 59.6.0-1.2
ii python3-wheel 0.37.1-2
Versions of packages python3-pip recommends:
ii build-essential 12.9
ii python3-dev 3.10.4-1
python3-pip suggests no packages.
-- no debconf information