raise packaging.version.InvalidVersion linux pip

Question:

after updating pip and setuptools==66.0, pip stopped working and responds to all attempts to call it like this:

    Traceback (most recent call last):
  File "/usr/bin/pip", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              3249, in <module>
    def _initialize_master_working_set():
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              3223, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              3261, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              619, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              632, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              1044, in __init__
    self.scan(search_path)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              1077, in scan
    self.add(dist)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              1096, in add
    dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              2631, in hashcmp
    self.parsed_version,
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              2685, in parsed_version
    raise packaging.version.InvalidVersion(f"{str(ex)} {info}") from None
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '0.23ubu                                                                                                                                                             ntu1' (package: distro-info)

thanks

Asked By: Artik gnom

||

Answers:

This turns out to be by design by the setuptools developers, please see some commentary on it at https://github.com/pypa/setuptools/issues/3772#issuecomment-1384342813.

In short, it’s by been removed to enforce strict semantic versioning of packages. If you can’t upgrade the versioning to be semantic versioning compatible, please pin setuptools to version < 66.

Here is Python’s versioning specification: https://peps.python.org/pep-0440/

Answered By: flyingsilverfin
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.