retro_star 2022-04-21 15:37 采纳率: 100%
浏览 368
已结题

pyinstaller打包exe后的模块未导入问题

我的脚本里引入了两个第三方库player和openpyxl

from openpyxl import load_workbook
from plyer import notification

一开始使用pyinstaller main.py打包过后,在cmd中运行main.exe报错

ModuleNotFoundError: No module named 'plyer.'

在了资料之后,用了以下办法:

  1. 加上第三方库的路径:pyinstaller main.py -P xxxxxxxx
  2. 在pyinstaller文件的hooks文件里加上了hook-player.py和hook-openpyxl.py文件
    最后运行报错变成了
Traceback (most recent call last):
  File "plyer\utils.py", line 93, in _ensure_obj
ModuleNotFoundError: No module named 'plyer.platforms'
Traceback (most recent call last):
  File "main.py", line 5, in <module>
  File "plyer\facades\notification.py", line 79, in notify
  File "plyer\facades\notification.py", line 88, in _notify
NotImplementedError: No usable implementation found!
[2816] Failed to execute script 'main' due to unhandled exception!

求解答.

  • 写回答

2条回答 默认 最新

  • retro_star 2022-04-23 18:55
    关注

    这个不是pyinstaller的问题,而是plyer这个库的问题,这是个兼容win、linux、macosx和Android的一个第三方包,虽然导入的时候都可以是用这个代码

    from plyer import notification
    

    但是实际运行的时候是根据运行的平台不同,调用不同的函数的,像我用的是windows系统,所以这个库运行到我写的

    notification.notify(
        title='测试',
        message='测试成功',
        timeout=10
    )
    

    这个代码的时候会从plyer.platforms.win.notification.WindowsNotification这个函数中调用运行,所以需要在打包时用以下代码

    pyinstaller main.py --hidden-import plyer.platforms.win.notification 
    
    

    而不是

    pyinstaller main.py --hidden-import plyer
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月27日
  • 已采纳回答 4月23日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题