You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python packaging安装依赖时抛出InvalidVersion错误(版本3.9.16+)

解决Pipenv安装依赖时的InvalidVersion错误(3.9.16+版本问题)

问题背景

在MacOS 13.2.1的M1 MacBook Pro上,通过pyenv安装了Python 3.9-dev版本,使用pipenv创建虚拟环境后,从Pipfile.lock安装依赖时触发InvalidVersion错误,提示版本'3.9.16+'无效。此前曾安装过Python 3.9.16+版本但已移除并替换为3.9-dev,虚拟环境的pyvenv.cfg文件中version_info显示为"3.9.16.final.0",不清楚错误版本号的来源,需解决依赖安装问题。

错误堆栈信息如下:

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+'

解决方法

1. 彻底重建虚拟环境

  • 删除当前虚拟环境:
    pipenv --rm
    
  • 确认pyenv使用的是3.9-dev版本:
    pyenv version
    # 若不是则设置当前项目局部版本
    pyenv local 3.9-dev
    
  • 重新创建虚拟环境并从Pipfile.lock安装依赖:
    pipenv install --ignore-pipfile
    

2. 检查并修正Pipfile.lock

  • 打开项目中的Pipfile.lock文件,搜索3.9.16+,找到依赖中使用该版本标识的约束规则,将其修改为符合语义化版本规范的格式(例如>=3.9.0或~=3.9)
  • 修改完成后重新执行安装:
    pipenv install
    

3. 清除缓存残留

  • 删除pipenv的虚拟环境缓存目录:
    rm -rf ~/.local/share/virtualenvs/
    
  • 清除pip缓存:
    pip cache purge
    
  • 重新创建虚拟环境并安装依赖

4. 重新安装Python 3.9-dev

  • 若上述方法无效,彻底卸载并重装3.9-dev:
    pyenv uninstall 3.9-dev
    pyenv install 3.9-dev
    pyenv rehash
    
  • 再次确认版本后重建虚拟环境

内容的提问来源于stack exchange,提问作者monotasker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 10:32:04