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

PyInstaller打包爬虫EXE遇FileNotFoundError:user_agent JSON文件缺失

解决PyInstaller打包后找不到user_agent库数据文件的问题

问题原因

user_agent库初始化时会读取内置的JSON数据文件(比如smartphone_dev_id.json),PyInstaller默认不会自动打包第三方库的非Python资源文件,所以打包后的EXE运行时,临时解压目录里缺少这些文件,导致报错。即使你替换了User-Agent为固定值,只要代码中导入了user_agent库,它的初始化逻辑还是会尝试加载这些文件。


解决方案

方案1:用--add-data参数打包资源文件

  1. 先找到user_agent库的安装路径:
    运行命令:pip show user_agent,查看输出里的Location字段,这是库的根目录。
  2. 构造打包命令(Windows系统):
    pyinstaller --onefile --add-data "【Location路径】\user_agent\data\*.json;user_agent\data" download.py
    
    比如如果Location是C:\Users\sa031\AppData\Local\Programs\Python\Python310\Lib\site-packages,命令就是:
    pyinstaller --onefile --add-data "C:\Users\sa031\AppData\Local\Programs\Python\Python310\Lib\site-packages\user_agent\data\*.json;user_agent\data" download.py
    
    • 注意:Windows路径分隔用分号;,Mac/Linux用冒号:。
    • 这个参数的作用是把指定的JSON文件打包进EXE,运行时会解压到临时目录的user_agent/data下,和库预期的路径匹配。

方案2:彻底移除user_agent库的依赖(推荐,如果你已经不用它生成UA)

既然你已经把User-Agent换成了固定值,直接删除代码中所有和user_agent相关的导入语句(比如import user_agent或者from user_agent import ...)以及相关代码,这样就不会触发库的初始化逻辑,自然不会报错。

方案3:通过.spec文件配置资源打包

  1. 先生成默认的spec文件:
    pyinstaller --onefile download.py
    
  2. 打开生成的download.spec文件,找到datas字段,添加资源路径配置:
    datas = [
        ('【Location路径】/user_agent/data/*.json', 'user_agent/data')
    ]
    
  3. 用spec文件重新打包:
    pyinstaller download.spec
    

内容的提问来源于stack exchange,提问作者Jung Woo Sohn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:40:44