PyInstaller打包Python项目后运行exe时goose3模块报资源文件缺失错误
根本原因
PyInstaller默认仅打包Python可执行脚本文件,不会自动识别打包第三方库依赖的非py格式静态资源文件。你遇到的报错是因为goose3运行需要调用其安装目录下resources images文件夹内的配置文件,打包时该文件夹没有被纳入dist目录,程序运行时找不到对应文件触发OSError。
解决步骤
- 第一步:定位goose3资源目录
打开你当前使用的Python环境(如果用虚拟环境需进入虚拟环境对应的路径)的site-packages文件夹,找到goose3目录,复制其中resources images文件夹的完整绝对路径备用。 - 第二步:选择以下任意一种方式重新打包
- 命令行直接加参数打包
Windows系统下直接在打包命令中添加--add-data参数指定资源映射规则,示例命令如下(替换其中的资源路径为你自己的本地路径):
参数中pyinstaller -F main.py --add-data "C:\你的本地路径\site-packages\goose3\resources images;./goose3/resources images";前为本地资源的源路径,;后为打包后资源在dist目录中的存放路径,需和报错中程序查找的路径完全匹配。
2. 通过spec配置文件打包
首次运行任意PyInstaller打包命令后,会生成和入口脚本(你的是main.py)同名的.spec文件,打开文件找到datas配置项,修改为如下格式:
保存后执行命令datas=[ ("C:\你的本地路径\site-packages\goose3\resources images", "./goose3/resources images"), ],pyinstaller main.spec即可完成打包。 - 命令行直接加参数打包
- 第三步:验证效果
打包完成后打开dist目录,确认已生成goose3/resources images文件夹,且文件夹内包含known-image-css.txt等配置文件,此时运行exe即可正常调用goose3的抓取功能。
内容的提问来源于stack exchange,提问作者Sen
相关产品推荐
相关产品推荐

