Skip to content

Cannot import 'setuptools.build_meta' when installing gevent on Ubuntu 24.04 #93

@nmarotte

Description

@nmarotte

Criticality

Low

What happened?

When installing gevent as part of the requirements of Odoo, odev fails to install them due to this error

/home/odoo/odev/virtualenvs/master/bin/python -m pip install --no-build-isolation gevent==21.8.0 --no-color
Collecting gevent==21.8.0
  Using cached gevent-21.8.0.tar.gz (6.2 MB)
  Preparing metadata (pyproject.toml) ... done
ERROR: Exception:
Traceback (most recent call last):
pip._vendor.pyproject_hooks._impl.BackendUnavailable: Cannot import 'setuptools.build_meta'

(full traceback below)

I believe this could be due to the strict requirements for setuptools version

setuptools>=58.0.0, <59.0.0; python_version >= '3.8' and python_version < '3.12'

After uninstalling setuptools and installing it again without any version requirements (it version version ~80 while less than 60 in the requirements) we were able to install gevent

Relevant log output

/home/odoo/odev/virtualenvs/master/bin/python -m pip install --no-build-isolation gevent==21.8.0 --no-color
Collecting gevent==21.8.0
  Using cached gevent-21.8.0.tar.gz (6.2 MB)
  Preparing metadata (pyproject.toml) ... done
ERROR: Exception:
Traceback (most recent call last):
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 107, in _run_wrapper
    status = _inner_run()
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 98, in _inner_run
    return self.run(options, args)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/cli/req_command.py", line 71, in wrapper
    return func(self, options, args)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/commands/install.py", line 393, in run
    requirement_set = resolver.resolve(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 98, in resolve
    result = self._result = resolver.resolve(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 596, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 429, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 150, in _add_to_criteria
    if not criterion.candidates:
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__
    return bool(self._sequence)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 165, in __bool__
    self._bool = any(self)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 149, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 39, in _iter_built
    candidate = func()
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 180, in _make_candidate_from_link
    base: BaseCandidate | None = self._make_base_candidate_from_link(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 226, in _make_base_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 309, in __init__
    super().__init__(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 162, in __init__
    self.dist = self._prepare()
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 239, in _prepare
    dist = self._prepare_distribution()
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 320, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 537, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 652, in _prepare_linked_requirement
    dist = _get_prepared_distribution(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 77, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py", line 72, in prepare_distribution_metadata
    self.req.prepare_metadata()
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/req/req_install.py", line 578, in prepare_metadata
    self.metadata_directory = generate_metadata(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py", line 34, in generate_metadata
    distinfo_dir = backend.prepare_metadata_for_build_wheel(metadata_dir)
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_internal/utils/misc.py", line 715, in prepare_metadata_for_build_wheel
    return super().prepare_metadata_for_build_wheel(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 224, in prepare_metadata_for_build_wheel
    return self._call_hook(
  File "/home/odoo/odev/virtualenvs/master/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 402, in _call_hook
    raise BackendUnavailable(
pip._vendor.pyproject_hooks._impl.BackendUnavailable: Cannot import 'setuptools.build_meta'
(failed reverse-i-search)`is-dev': /home/odoo/odev/virtualenvs/master/bin/python -m pip install --no-build-^Colation gevent==21.8.0 --no-color

What is expected?

change the requirements of setuptools to be less strict or to use a more recent version of it

Possible implementation

No response

Additional information

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions