我的脚本里引入了两个第三方库player和openpyxl
from openpyxl import load_workbook
from plyer import notification
一开始使用pyinstaller main.py打包过后,在cmd中运行main.exe报错
ModuleNotFoundError: No module named 'plyer.'
在了资料之后,用了以下办法:
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!
求解答.
这个不是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
pyinstaller 的老问题了
加两句,再打包试试
import openpyxl
import plyer