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

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 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办