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

PyInstaller打包时无法包含win10toast库的问题求助

问题:PyInstaller打包win10toast程序时出现DistributionNotFound错误

我尝试制作一个简单的提醒EXE,代码如下:

import win10toast

toaster = win10toast.ToastNotifier()
toaster.show_toast("Title", "Testing alert")

使用如下bat脚本通过PyInstaller进行打包:

@echo off

cd /d "D:\General Software\PycharmProjects\Project1\venv\Scripts"

call activate.bat

cd /d "%~dp0"

pyinstaller --onefile alert_test.py

pause

运行打包后的程序时出现错误:pkg_resources.DistributionNotFound: The 'win10toast' distribution was not found and is required by the application。即使添加--hidden-import win10toast参数仍无法解决。我知道可以使用onedir模式后手动复制库,但想了解问题根源,请问有人知道原因吗?

原因分析与解决思路
  • win10toast依赖检测机制特殊:win10toast内部并非仅依赖模块导入,而是通过pkg_resources验证自身的分发包是否存在。PyInstaller默认只会收集代码中显式导入的模块文件,不会自动生成pkg_resources所需的包元数据(如dist-info目录),所以即使添加--hidden-import,也只能让模块文件被打包,无法满足分发包的验证要求。

  • --onefile模式的局限性:采用--onefile模式时,所有文件会被打包成单个可执行文件,运行时临时解压到系统临时目录。但win10toast需要的包元数据不会被自动包含进这个临时环境,导致pkg_resources找不到对应的分发信息,触发错误。而onedir模式下程序文件直接存放在目录中,手动复制库的元数据目录后,pkg_resources就能正常识别。

  • 虚拟环境激活的有效性:需确认bat脚本中虚拟环境是否正确激活。如果激活步骤执行不彻底,PyInstaller可能调用全局环境的工具,导致打包时未正确读取虚拟环境中win10toast的完整信息,进而遗漏必要的文件或元数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:23:35