python使用pyinstaller打包时出现raise ValueError(“Entry points must be listed in groups“)问题解决方法

文章描述了作者在使用pyinstaller打包Python脚本时遇到的ValueError异常,经过尝试升级、降级pyinstaller版本,最终发现是由于Python3.7版本与新版本pyinstaller的兼容性问题,降级到4.5版本解决了问题。

python使用pyinstaller打包时出现raise ValueError("Entry points must be listed in groups")问题记录

【背景】

这几天使用pyinstaller打包时出现一直出现raise ValueError("Entry points must be listed in groups")的报错提示,报错详情如下,折腾了好几天,参考了很多资料和AI问答,都没搞定。

后面经过多次尝试,终于解决了,记录下解决过程,以备后续使用,也方便后来者。

【报错详情】

Traceback (most recent call last):
  File "d:\python\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\python\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Python\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "d:\python\lib\site-packages\PyInstaller\__main__.py", line 194, in _console_script_run
    run()
  File "d:\python\lib\site-packages\PyInstaller\__main__.py", line 180, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "d:\python\lib\site-packages\PyInstaller\__main__.py", line 61, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 1019, in main
    build(specfile, distpath, workpath, clean_build)
  File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 944, in build
    exec(code, spec_namespace)
  File 
    noarchive=False,
  File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 373, in __init__
    self.hookspath += discover_hook_directories()
  File "d:\python\lib\site-packages\PyInstaller\isolated\_parent.py", line 403, in wrapped
    return call(function, *args, **kwargs)
  File "d:\python\lib\site-packages\PyInstaller\isolated\_parent.py", line 372, in call
    return isolated.call(function, *args, **kwargs)
  File "d:\python\lib\site-packages\PyInstaller\isolated\_parent.py", line 302, in call
    raise RuntimeError(f"Child process call to {function.__name__}() failed with:\n" + output)
RuntimeError: Child process call to discover_hook_directories() failed with:
  File "d:\python\lib\site-packages\pkg_resources\__init__.py", line 2936, in get_entry_map
    ep_map = self._ep_map
  File "d:\python\lib\site-packages\pkg_resources\__init__.py", line 2902, in __getattr__
    raise AttributeError(attr)
AttributeError: _ep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\python\lib\site-packages\PyInstaller\isolated\_child.py", line 63, in run_next_command
    output = function(*args, **kwargs)
  File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 99, in discover_hook_directories
    entry_points = sorted(entry_points, key=lambda x: x.module_name == "_pyinstaller_hooks_contrib.hooks")
  File "d:\python\lib\site-packages\pkg_resources\__init__.py", line 712, in <genexpr>
    for entry in dist.get_entry_map(group).values()
  File "d:\python\lib\site-packages\pkg_resources\__init__.py", line 2939, in get_entry_map
    self._get_metadata('entry_points.txt'), self
  File "d:\python\lib\site-packages\pkg_resources\__init__.py", line 2606, in parse_map
    raise ValueError("Entry points must be listed in groups")
ValueError: Entry points must be listed in groups

【尝试过程】

1、卸载pyinstaller,并重新安装pyinstaller 5.13.2,无效;

2、尝试将之前备份过的pyinstaller包覆盖替换,无效;

3、尝试降级pyinstaller至最近的三个版本,pip install pyinstaller==5.10,无效;

4、尝试更新打包涉及到的相关包,无效;

【解决方法】

尝试继续降级pyinstaller的版本,成功解决问题:

pip install pyinstaller==4.5

【怀疑】

可能是安装的python版本是3.7版本,太旧了,只能使用比较老版本的pyinstaller,新版本会出现不兼容的情况,后续大家遇到类似的问题,可以参考一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

《代码爱好者》

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值