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

使用PyInstaller打包含gradio_rangeslider的Gradio程序时出现ModuleNotFoundError问题求助

PyInstaller打包含gradio_rangeslider的Gradio程序时出现ModuleNotFoundError问题求助

我正在尝试用PyInstaller打包一个使用Gradio做GUI,同时用到了自定义Gradio插件gradio_rangeslider的Python程序。

之前我没法正常导入gradio,后来通过添加--collect-data=gradio和--collect-data=gradio_client命令行参数,还在.spec文件里指定gradio以py文件模式导入,才解决了问题。

我用这条命令生成了.spec文件:

pyi-makespec --additional-hooks-dir="build_deps\\" --collect-data=gradio_client --collect-data=gradio --hidden-import pyarrow.vendored.version --onefile Program_name.py

生成的.spec文件内容如下:

# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_data_files

datas = []
datas += collect_data_files('gradio_client')
datas += collect_data_files('gradio')


a = Analysis(
    ['Program_name.py'],
    pathex=[],
    binaries=[],
    datas=datas,
    hiddenimports=['pyarrow.vendored.version'],
    hookspath=['build_deps\\'],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
    module_collection_mode={
        'gradio': 'py',
    },
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='Program_name',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

随后我执行了打包命令:

pyinstaller --clean --noconfirm Program_name.spec

.exe文件成功生成,但运行时却抛出了如下错误:

Traceback (most recent call last):
  File "Program_name.py", line 22, in <module>
ModuleNotFoundError: No module named 'gradio_rangeslider'
[PYI-24644:ERROR] Failed to execute script 'Program_name' due to unhandled exception!

我尝试过两种解决方式:

  • 在pyi-makespec命令中添加--collect-data=gradio_rangeslider参数
  • 在.spec文件的module_collection_mode里配置gradio_rangeslider为py编译模式:
    module_collection_mode={
            'gradio': 'py',
            'gradio_rangeslider ': 'py'
        },
    

但依然出现相同的错误。所有模块都安装在Python虚拟环境中,PyInstaller也是在该虚拟环境内运行的,直接运行Python脚本时一切正常。

编辑补充:后来我在PyInstaller的命令行输出里发现了这条警告:

WARNING: collect_data_files - skipping data collection for module 'gradio_rangeslider' as it is not a package.

我不清楚为什么它会认为gradio_rangeslider不是一个包,希望能得到大家的帮助。

备注:内容来源于stack exchange,提问作者Liam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:53:10