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

Pyinstaller打包后无法找到模块:Hug服务启动失败问题

问题分析与解决方案

问题根源

  1. PyInstaller单文件模式运行时,会将程序解压到临时目录,但仅存放编译后的.pyc文件,不会保留.py源文件,所以你通过路径拼接得到的api.py必然不存在。
  2. 用subprocess调用hug命令时,实际调用的是系统环境中的Python解释器,而非PyInstaller打包的嵌入式Python,导致无法识别打包后的模块结构。

修复方案

放弃通过子进程调用hug命令的方式,直接在代码中调用Hug的内置API启动服务,完全适配打包后的环境。

修改代码

  1. 更新startserver.py:
import hug
import mypkg.api  # 直接导入api模块

def start():
    print("inside startserver start()")
    # 用Hug内置API启动服务,无需依赖外部文件路径
    hug.API(__name__).extend(mypkg.api)
    hug.run(server='wsgiref', port=8000)  # 可按需调整服务类型和端口
  1. __main__.py保持原有逻辑:
from mypkg.startserver import start

if __name__ == "__main__":
    start()

打包参数调整

使用PyInstaller打包时,添加参数确保Hug相关依赖被正确打包:

pyinstaller --onefile --name mypkg_demo --hidden-import hug --hidden-import mypkg.api mypkg/__main__.py

验证

打包完成后运行生成的EXE,浏览器访问http://localhost:8000/ping,即可正常获取{"response": "pong"}响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:45:54