-
-
Notifications
You must be signed in to change notification settings - Fork 550
Description
Issue
Is there any chance prepare_metadata_for_build_wheel is being called before get_requires_for_build_wheel?1
On Python 3.12b2, the setuptools backend seems to have problem to import the bdist_wheel command implemented in the wheel package when generating the .dist_info directory:
SystemExit: error: invalid command 'bdist_wheel'
I had a quick look on the perform_packaging function in the src/tox/tox_env/python/virtual_env/package/pyproject.py, one possibility is that the call chain looks like the following (I might be wrong):
perform_packaging => _load_deps => _load_deps_from_built_metadata => get_package_dependencies => _ensure_meta_present => prepare_metadata_for_build_wheel
(before _setup_env gets the chance to run).
Environment
Provide at least:
- OS: Debian bullseye on Docker container (
python:3.12.0b2-bullseye)
Output of pip list of the host Python, where tox is installed
$ pip list
Package Version
------------- -------
cachetools 5.3.1
chardet 5.1.0
colorama 0.4.6
distlib 0.3.6
filelock 3.12.2
packaging 23.1
pip 23.1.2
platformdirs 3.6.0
pluggy 1.1.0
pyproject-api 1.5.2
setuptools 67.8.0
tox 4.6.2
virtualenv 20.23.1
wheel 0.40.0Output of running tox
Output of tox -rvv
$ # tox -rvv
default: 111 W remove tox env folder /tmp/myproj/.tox/default [tox/tox_env/api.py:322]
.pkg: 122 W remove tox env folder /tmp/myproj/.tox/.pkg [tox/tox_env/api.py:322]
default: 163 I find interpreter for spec PythonSpec(path=/usr/local/bin/python) [virtualenv/discovery/builtin.py:58]
default: 164 I proposed PythonInfo(spec=CPython3.12.0.beta.2-64, exe=/usr/local/bin/python, platform=linux, version='3.12.0b2 (main, Jun 13 2023, 14:30:30) [GCC 10.2.1 20210110]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:65]
default: 164 D accepted PythonInfo(spec=CPython3.12.0.beta.2-64, exe=/usr/local/bin/python, platform=linux, version='3.12.0b2 (main, Jun 13 2023, 14:30:30) [GCC 10.2.1 20210110]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:67]
default: 165 D filesystem is case-sensitive [virtualenv/info.py:26]
default: 184 I create virtual environment via CPython3Posix(dest=/tmp/myproj/.tox/default, clear=False, no_vcs_ignore=False, global=False) [virtualenv/run/session.py:50]
default: 184 D create folder /tmp/myproj/.tox/default/bin [virtualenv/util/path/_sync.py:12]
default: 184 D create folder /tmp/myproj/.tox/default/lib/python3.12/site-packages [virtualenv/util/path/_sync.py:12]
default: 185 D write /tmp/myproj/.tox/default/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:32]
default: 185 D home = /usr/local/bin [virtualenv/create/pyenv_cfg.py:36]
default: 185 D implementation = CPython [virtualenv/create/pyenv_cfg.py:36]
default: 185 D version_info = 3.12.0.beta.2 [virtualenv/create/pyenv_cfg.py:36]
default: 185 D virtualenv = 20.23.1 [virtualenv/create/pyenv_cfg.py:36]
default: 185 D include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:36]
default: 185 D base-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
default: 185 D base-exec-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
default: 186 D base-executable = /usr/local/bin/python [virtualenv/create/pyenv_cfg.py:36]
default: 186 D symlink /usr/local/bin/python to /tmp/myproj/.tox/default/bin/python [virtualenv/util/path/_sync.py:32]
default: 187 D create virtualenv import hook file /tmp/myproj/.tox/default/lib/python3.12/site-packages/_virtualenv.pth [virtualenv/create/via_global_ref/api.py:91]
default: 187 D create /tmp/myproj/.tox/default/lib/python3.12/site-packages/_virtualenv.py [virtualenv/create/via_global_ref/api.py:94]
default: 187 D ============================== target debug ============================== [virtualenv/run/session.py:52]
default: 188 D debug via /tmp/myproj/.tox/default/bin/python /usr/local/lib/python3.12/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:200]
default: 187 D {
"sys": {
"executable": "/tmp/myproj/.tox/default/bin/python",
"_base_executable": "/usr/local/bin/python3.12",
"prefix": "/tmp/myproj/.tox/default",
"base_prefix": "/usr/local",
"real_prefix": null,
"exec_prefix": "/tmp/myproj/.tox/default",
"base_exec_prefix": "/usr/local",
"path": [
"/usr/local/lib/python312.zip",
"/usr/local/lib/python3.12",
"/usr/local/lib/python3.12/lib-dynload",
"/tmp/myproj/.tox/default/lib/python3.12/site-packages"
],
"meta_path": [
"<class '_virtualenv._Finder'>",
"<class '_frozen_importlib.BuiltinImporter'>",
"<class '_frozen_importlib.FrozenImporter'>",
"<class '_frozen_importlib_external.PathFinder'>"
],
"fs_encoding": "utf-8",
"io_encoding": "utf-8"
},
"version": "3.12.0b2 (main, Jun 13 2023, 14:30:30) [GCC 10.2.1 20210110]",
"makefile_filename": "/usr/local/lib/python3.12/config-3.12-x86_64-linux-gnu/Makefile",
"os": "<module 'os' (frozen)>",
"site": "<module 'site' (frozen)>",
"datetime": "<module 'datetime' from '/usr/local/lib/python3.12/datetime.py'>",
"math": "<module 'math' from '/usr/local/lib/python3.12/lib-dynload/math.cpython-312-x86_64-linux-gnu.so'>",
"json": "<module 'json' from '/usr/local/lib/python3.12/json/__init__.py'>"
} [virtualenv/run/session.py:53]
default: 210 I add seed packages via FromAppData(download=False, pip=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv) [virtualenv/run/session.py:57]
default: 212 D install pip from wheel /usr/local/lib/python3.12/site-packages/virtualenv/seed/wheels/embed/pip-23.1.2-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:49]
default: 213 D copy /root/.local/share/virtualenv/wheel/3.12/image/1/CopyPipInstall/pip-23.1.2-py3-none-any/pip-23.1.2.virtualenv to /tmp/myproj/.tox/default/lib/python3.12/site-packages/pip-23.1.2.virtualenv [virtualenv/util/path/_sync.py:40]
default: 213 D copy directory /root/.local/share/virtualenv/wheel/3.12/image/1/CopyPipInstall/pip-23.1.2-py3-none-any/pip-23.1.2.dist-info to /tmp/myproj/.tox/default/lib/python3.12/site-packages/pip-23.1.2.dist-info [virtualenv/util/path/_sync.py:40]
default: 215 D copy directory /root/.local/share/virtualenv/wheel/3.12/image/1/CopyPipInstall/pip-23.1.2-py3-none-any/pip to /tmp/myproj/.tox/default/lib/python3.12/site-packages/pip [virtualenv/util/path/_sync.py:40]
default: 258 D generated console scripts pip pip3.12 pip-3.12 pip3 [virtualenv/seed/embed/via_app_data/pip_install/base.py:43]
default: 259 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python [virtualenv/run/session.py:63]
default: 261 D write /tmp/myproj/.tox/default/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:32]
default: 261 D home = /usr/local/bin [virtualenv/create/pyenv_cfg.py:36]
default: 261 D implementation = CPython [virtualenv/create/pyenv_cfg.py:36]
default: 261 D version_info = 3.12.0.beta.2 [virtualenv/create/pyenv_cfg.py:36]
default: 261 D virtualenv = 20.23.1 [virtualenv/create/pyenv_cfg.py:36]
default: 262 D include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:36]
default: 262 D base-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
default: 262 D base-exec-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
default: 262 D base-executable = /usr/local/bin/python [virtualenv/create/pyenv_cfg.py:36]
.pkg: 265 I find interpreter for spec PythonSpec(path=/usr/local/bin/python) [virtualenv/discovery/builtin.py:58]
.pkg: 265 I proposed PythonInfo(spec=CPython3.12.0.beta.2-64, exe=/usr/local/bin/python, platform=linux, version='3.12.0b2 (main, Jun 13 2023, 14:30:30) [GCC 10.2.1 20210110]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:65]
.pkg: 265 D accepted PythonInfo(spec=CPython3.12.0.beta.2-64, exe=/usr/local/bin/python, platform=linux, version='3.12.0b2 (main, Jun 13 2023, 14:30:30) [GCC 10.2.1 20210110]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:67]
.pkg: 266 I create virtual environment via CPython3Posix(dest=/tmp/myproj/.tox/.pkg, clear=False, no_vcs_ignore=False, global=False) [virtualenv/run/session.py:50]
.pkg: 266 D create folder /tmp/myproj/.tox/.pkg/bin [virtualenv/util/path/_sync.py:12]
.pkg: 267 D create folder /tmp/myproj/.tox/.pkg/lib/python3.12/site-packages [virtualenv/util/path/_sync.py:12]
.pkg: 267 D write /tmp/myproj/.tox/.pkg/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:32]
.pkg: 267 D home = /usr/local/bin [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D implementation = CPython [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D version_info = 3.12.0.beta.2 [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D virtualenv = 20.23.1 [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D base-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D base-exec-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D base-executable = /usr/local/bin/python [virtualenv/create/pyenv_cfg.py:36]
.pkg: 267 D symlink /usr/local/bin/python to /tmp/myproj/.tox/.pkg/bin/python [virtualenv/util/path/_sync.py:32]
.pkg: 268 D create virtualenv import hook file /tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/_virtualenv.pth [virtualenv/create/via_global_ref/api.py:91]
.pkg: 268 D create /tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/_virtualenv.py [virtualenv/create/via_global_ref/api.py:94]
.pkg: 268 D ============================== target debug ============================== [virtualenv/run/session.py:52]
.pkg: 268 D debug via /tmp/myproj/.tox/.pkg/bin/python /usr/local/lib/python3.12/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:200]
.pkg: 268 D {
"sys": {
"executable": "/tmp/myproj/.tox/.pkg/bin/python",
"_base_executable": "/usr/local/bin/python3.12",
"prefix": "/tmp/myproj/.tox/.pkg",
"base_prefix": "/usr/local",
"real_prefix": null,
"exec_prefix": "/tmp/myproj/.tox/.pkg",
"base_exec_prefix": "/usr/local",
"path": [
"/usr/local/lib/python312.zip",
"/usr/local/lib/python3.12",
"/usr/local/lib/python3.12/lib-dynload",
"/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages"
],
"meta_path": [
"<class '_virtualenv._Finder'>",
"<class '_frozen_importlib.BuiltinImporter'>",
"<class '_frozen_importlib.FrozenImporter'>",
"<class '_frozen_importlib_external.PathFinder'>"
],
"fs_encoding": "utf-8",
"io_encoding": "utf-8"
},
"version": "3.12.0b2 (main, Jun 13 2023, 14:30:30) [GCC 10.2.1 20210110]",
"makefile_filename": "/usr/local/lib/python3.12/config-3.12-x86_64-linux-gnu/Makefile",
"os": "<module 'os' (frozen)>",
"site": "<module 'site' (frozen)>",
"datetime": "<module 'datetime' from '/usr/local/lib/python3.12/datetime.py'>",
"math": "<module 'math' from '/usr/local/lib/python3.12/lib-dynload/math.cpython-312-x86_64-linux-gnu.so'>",
"json": "<module 'json' from '/usr/local/lib/python3.12/json/__init__.py'>"
} [virtualenv/run/session.py:53]
.pkg: 292 I add seed packages via FromAppData(download=False, pip=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv) [virtualenv/run/session.py:57]
.pkg: 293 D install pip from wheel /usr/local/lib/python3.12/site-packages/virtualenv/seed/wheels/embed/pip-23.1.2-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:49]
.pkg: 294 D copy /root/.local/share/virtualenv/wheel/3.12/image/1/CopyPipInstall/pip-23.1.2-py3-none-any/pip-23.1.2.virtualenv to /tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/pip-23.1.2.virtualenv [virtualenv/util/path/_sync.py:40]
.pkg: 294 D copy directory /root/.local/share/virtualenv/wheel/3.12/image/1/CopyPipInstall/pip-23.1.2-py3-none-any/pip-23.1.2.dist-info to /tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/pip-23.1.2.dist-info [virtualenv/util/path/_sync.py:40]
.pkg: 295 D copy directory /root/.local/share/virtualenv/wheel/3.12/image/1/CopyPipInstall/pip-23.1.2-py3-none-any/pip to /tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/pip [virtualenv/util/path/_sync.py:40]
.pkg: 341 D generated console scripts pip-3.12 pip pip3 pip3.12 [virtualenv/seed/embed/via_app_data/pip_install/base.py:43]
.pkg: 341 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python [virtualenv/run/session.py:63]
.pkg: 343 D write /tmp/myproj/.tox/.pkg/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:32]
.pkg: 343 D home = /usr/local/bin [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D implementation = CPython [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D version_info = 3.12.0.beta.2 [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D virtualenv = 20.23.1 [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D base-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D base-exec-prefix = /usr/local [virtualenv/create/pyenv_cfg.py:36]
.pkg: 343 D base-executable = /usr/local/bin/python [virtualenv/create/pyenv_cfg.py:36]
.pkg: 344 W install_requires> python -I -m pip install setuptools [tox/tox_env/api.py:427]
Collecting setuptools
Using cached setuptools-67.8.0-py3-none-any.whl (1.1 MB)
Installing collected packages: setuptools
Successfully installed setuptools-67.8.0
.pkg: 1949 I exit 0 (1.60 seconds) /tmp/myproj> python -I -m pip install setuptools pid=55 [tox/execute/api.py:279]
.pkg: 1951 W _optional_hooks> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:427]
Backend: run command _optional_hooks with args {}
Backend: Wrote response {'return': {'get_requires_for_build_sdist': True, 'prepare_metadata_for_build_wheel': True, 'get_requires_for_build_wheel': True, 'build_editable': True, 'get_requires_for_build_editable': True, 'prepare_metadata_for_build_editable': True}} to /tmp/pep517__optional_hooks-q3o0s7fb.json
.pkg: 2065 I exit None (0.11 seconds) /tmp/myproj> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=66 [tox/execute/api.py:279]
.pkg: 2065 W get_requires_for_build_sdist> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:427]
Backend: run command get_requires_for_build_sdist with args {'config_settings': None}
running egg_info
writing src/myproj.egg-info/PKG-INFO
writing dependency_links to src/myproj.egg-info/dependency_links.txt
writing requirements to src/myproj.egg-info/requires.txt
writing top-level names to src/myproj.egg-info/top_level.txt
reading manifest file 'src/myproj.egg-info/SOURCES.txt'
writing manifest file 'src/myproj.egg-info/SOURCES.txt'
Backend: Wrote response {'return': []} to /tmp/pep517_get_requires_for_build_sdist-wkhpgv5y.json
.pkg: 2092 I exit None (0.03 seconds) /tmp/myproj> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=66 [tox/execute/api.py:279]
.pkg: 2094 W prepare_metadata_for_build_wheel> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:427]
Backend: run command prepare_metadata_for_build_wheel with args {'metadata_directory': '/tmp/myproj/.tox/.pkg/.meta', 'config_settings': {'--build-option': []}}
running dist_info
creating /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info
writing /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/PKG-INFO
writing dependency_links to /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/dependency_links.txt
writing requirements to /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/requires.txt
writing top-level names to /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/top_level.txt
writing manifest file '/tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/SOURCES.txt'
reading manifest file '/tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/SOURCES.txt'
writing manifest file '/tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/SOURCES.txt'
creating '/tmp/myproj/.tox/.pkg/.meta/myproj-0.42.dist-info'
Traceback (most recent call last):
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
dist.run_commands()
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
self.run_command(cmd)
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/dist.py", line 1244, in run_command
super().run_command(command)
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
cmd_obj.run()
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/command/dist_info.py", line 104, in run
bdist_wheel = self.get_finalized_command('bdist_wheel')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 304, in get_finalized_command
cmd_obj = self.distribution.get_command_obj(command, create)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 860, in get_command_obj
klass = self.get_command_class(command)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/dist.py", line 992, in get_command_class
return _Distribution.get_command_class(self, command)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 844, in get_command_class
raise DistutilsModuleError("invalid command '%s'" % command)
distutils.errors.DistutilsModuleError: invalid command 'bdist_wheel'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py", line 90, in run
outcome = backend_proxy(parsed_message["cmd"], **parsed_message["kwargs"])
Backend: Wrote response {'code': "error: invalid command 'bdist_wheel'", 'exc_type': 'SystemExit', 'exc_msg': "error: invalid command 'bdist_wheel'"} to /tmp/pep517_prepare_metadata_for_build_wheel-fo7grp6v.json
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py", line 32, in __call__
return getattr(on_object, name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/build_meta.py", line 380, in prepare_metadata_for_build_wheel
self.run_setup()
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/build_meta.py", line 338, in run_setup
exec(code, locals())
File "<string>", line 1, in <module>
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/__init__.py", line 107, in setup
return distutils.core.setup(**attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 185, in setup
return run_commands(dist)
^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 215, in run_commands
raise SystemExit("error: " + str(msg))
SystemExit: error: invalid command 'bdist_wheel'
.pkg: 2120 I exit None (0.03 seconds) /tmp/myproj> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=66 [tox/execute/api.py:279]
default: 2121 E packaging backend failed (code=error: invalid command 'bdist_wheel'), with SystemExit: error: invalid command 'bdist_wheel'
Traceback (most recent call last):
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
dist.run_commands()
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
self.run_command(cmd)
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/dist.py", line 1244, in run_command
super().run_command(command)
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
cmd_obj.run()
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/command/dist_info.py", line 104, in run
bdist_wheel = self.get_finalized_command('bdist_wheel')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 304, in get_finalized_command
cmd_obj = self.distribution.get_command_obj(command, create)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 860, in get_command_obj
klass = self.get_command_class(command)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/dist.py", line 992, in get_command_class
return _Distribution.get_command_class(self, command)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 844, in get_command_class
raise DistutilsModuleError("invalid command '%s'" % command)
distutils.errors.DistutilsModuleError: invalid command 'bdist_wheel'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py", line 90, in run
outcome = backend_proxy(parsed_message["cmd"], **parsed_message["kwargs"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py", line 32, in __call__
return getattr(on_object, name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/build_meta.py", line 380, in prepare_metadata_for_build_wheel
self.run_setup()
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/build_meta.py", line 338, in run_setup
exec(code, locals())
File "<string>", line 1, in <module>
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/__init__.py", line 107, in setup
return distutils.core.setup(**attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 185, in setup
return run_commands(dist)
^^^^^^^^^^^^^^^^^^
File "/tmp/myproj/.tox/.pkg/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 215, in run_commands
raise SystemExit("error: " + str(msg))
SystemExit: error: invalid command 'bdist_wheel'
Backend: run command prepare_metadata_for_build_wheel with args {'metadata_directory': '/tmp/myproj/.tox/.pkg/.meta', 'config_settings': {'--build-option': []}}
running dist_info
creating /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info
writing /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/PKG-INFO
writing dependency_links to /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/dependency_links.txt
writing requirements to /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/requires.txt
writing top-level names to /tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/top_level.txt
writing manifest file '/tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/SOURCES.txt'
reading manifest file '/tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/SOURCES.txt'
writing manifest file '/tmp/myproj/.tox/.pkg/.meta/myproj.egg-info/SOURCES.txt'
creating '/tmp/myproj/.tox/.pkg/.meta/myproj-0.42.dist-info'
Backend: Wrote response {'code': "error: invalid command 'bdist_wheel'", 'exc_type': 'SystemExit', 'exc_msg': "error: invalid command 'bdist_wheel'"} to /tmp/pep517_prepare_metadata_for_build_wheel-fo7grp6v.json [tox/session/cmd/run/single.py:53]
.pkg: 2122 W _exit> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:427]
Backend: run command _exit with args {}
Backend: Wrote response {'return': 0} to /tmp/pep517__exit-eqa8avq3.json
.pkg: 2132 I exit None (0.01 seconds) /tmp/myproj> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=66 [tox/execute/api.py:279]
default: FAIL code error: invalid command 'bdist_wheel' (2.03 seconds)
evaluation failed :( (2.06 seconds)
error: invalid command 'bdist_wheel'Minimal example
> docker run --rm -it python:3.12.0b2-bullseye /bin/bash
mkdir -p /tmp/myproj/src/myproj
cd /tmp/myproj
touch src/myproj/__init__.py
cat <<EOF > pyproject.toml
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
EOF
cat <<EOF >setup.cfg
[metadata]
name = myproj
version = 0.42
[options.extras_require]
testing = pytest
EOF
cat <<EOF >tox.ini
[tox]
envlist = default
isolated_build = True
[testenv]
extras = testing
commands = pytest {posargs}
EOF
python -m pip install -U pip
python -m pip install -U 'tox==4.6.2'
tox
# .pkg: install_requires> python -I -m pip install setuptools
# .pkg: _optional_hooks> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
# .pkg: get_requires_for_build_sdist> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
# .pkg: prepare_metadata_for_build_wheel> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
# ...
# Backend: Wrote response {'code': "error: invalid command 'bdist_wheel'", 'exc_type': 'SystemExit', 'exc_msg': "error: invalid command 'bdist_wheel'"} to /tmp/pep517_prepare_metadata_for_build_wheel-v3269hdr.json
# .pkg: _exit> python /usr/local/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta
# default: FAIL code error: invalid command 'bdist_wheel' (3.08 seconds)
# evaluation failed :( (3.12 seconds)
# error: invalid command 'bdist_wheel'Footnotes
-
If I am not wrong PEP 517 specifies that
get_requires_for_build_wheelshould be called beforeprepare_metadata_for_build_wheel: ...get_requires_for_build_wheel... to be installed when calling thebuild_wheelorprepare_metadata_for_build_wheelhooks... ↩