Search code examples
pythonpython-3.xvirtualenvpython-packaging

python: packaging throws InvalidVersion error for 3.9.16+


When I try to install packages in my virtualenv from Pipfile.lock, I get the following InvalidVersion error message (see below) that is blocking the installation. How can I fix this to get the packages from Pipfile.lock installed?

Note that I'm not sure where the version number 3.9.16+ is coming from. I'm using 3.9-dev installed by pyenv, linked from my virtualenv (created by pipenv). The version_info in the virtual environment's pyvenv.cfg file is "3.9.16.final.0".

(I'm running MacOS 13.2.1 on an M1 Macbook pro. I did earlier have version 3.9.16+ installed via pyenv, but I removed that and replaced it with 3.9-dev)

Failed to install dependencies.
Errors: Traceback (most recent call last):
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3105, in _dep_map
    return self.__dep_map
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2901, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/bin/invenio", line 8, in <module>
    sys.exit(cli())
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/flask/cli.py", line 354, in decorator
    app = __ctx.ensure_object(ScriptInfo).load_app()
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/flask/cli.py", line 301, in load_app
    app = self.create_app()
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/invenio_base/app.py", line 170, in create_cli_app
    app = create_app(debug=get_debug_flag())
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/invenio_base/app.py", line 106, in _create_app
    config_loader(app, **kwargs)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/invenio_app/factory.py", line 60, in config_loader
    invenio_config_loader(app, **kwargs_config)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/invenio_config/utils.py", line 54, in _config_loader
    InvenioConfigEntryPointModule(app=app)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/invenio_config/entrypoint.py", line 35, in __init__
    self.init_app(app)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/invenio_config/entrypoint.py", line 45, in init_app
    app.config.from_object(ep.load())
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2516, in load
    self.require(*args, **kwargs)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2539, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 832, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2821, in requires
    dm = self._dep_map
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3107, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3124, in _compute_dependencies
    common = types.MappingProxyType(dict.fromkeys(reqs_for_extra(None)))
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3121, in reqs_for_extra
    if not req.marker or req.marker.evaluate({'extra': extra}):
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py", line 245, in evaluate
    return _evaluate_markers(self._markers, current_environment)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py", line 137, in _evaluate_markers
    groups[-1].append(_evaluate_markers(marker, environment))
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py", line 151, in _evaluate_markers
    groups[-1].append(_eval_op(lhs_value, op, rhs_value))
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py", line 109, in _eval_op
    return spec.contains(lhs, prereleases=True)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.py", line 565, in contains
    normalized_item = _coerce_version(item)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.py", line 36, in _coerce_version
    version = Version(version)
  File "/Users/ianscott/.local/share/virtualenvs/coretest-LjeDqtCi/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py", line 197, in __init__
    raise InvalidVersion(f"Invalid version: '{version}'")
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '3.9.16+'

Solution

  • You might have a previous Python version installed with conda: this issue in conda refers to that 3.9.16.final.0. If you have conda installed, try to run conda info and see what it reports.