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

PyInstaller打包后执行报错:找不到fake_useragent.data模块及文件

解决PyInstaller打包fake_useragent时丢失browsers.json的问题

问题根源很明确:fake_useragent运行时依赖自带的browsers.json数据文件,但PyInstaller默认只打包Python代码文件,不会自动包含这类资源文件;而--hiddenimport仅负责处理Python模块的隐式导入,管不了数据文件,所以打包后运行会出现找不到文件的报错。

给你三种可行的解决办法:

方法1:命令行直接用--add-data参数打包

  1. 先找到Python环境里fake_useragent的安装路径,执行命令:
    pip show fake_useragent
    
    查看输出里的Location字段(比如C:\PythonXX\Lib\site-packages),进入该路径找到fake_useragent/data文件夹。
  2. 打包时添加--add-data参数,Windows系统用分号分隔源路径和目标路径:
    pyinstaller --hidden-import flask --hidden-import fake_useragent --add-data "C:\PythonXX\Lib\site-packages\fake_useragent\data;fake_useragent/data" main.py
    
    若为Linux/macOS系统,把分号换成冒号即可。

方法2:通过.spec文件配置(更灵活)

  1. 先生成默认的.spec文件:
    pyinstaller main.py
    
  2. 打开生成的main.spec文件,找到datas列表,添加browsers.json的路径配置:
    datas=[
        ('C:\PythonXX\Lib\site-packages\fake_useragent\data\browsers.json', 'fake_useragent/data'),
    ]
    
  3. 用.spec文件重新打包:
    pyinstaller main.spec
    

方法3:修改代码让fake_useragent离线加载

  1. 手动复制本地Python环境中fake_useragent/data目录下的browsers.json文件,放到你的脚本main.py同目录下。
  2. 修改代码里的UserAgent初始化逻辑:
    from fake_useragent import UserAgent
    # 指定本地的browsers.json路径
    ua = UserAgent(path='browsers.json')
    
  3. 打包时把这个文件也加入打包范围:
    pyinstaller --hidden-import flask --hidden-import fake_useragent --add-data "browsers.json;." main.py
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:43:17