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

PyInstaller4.2打包报错ModuleNotFoundError: No module named 'algosec'求助

解决方案

根因说明

之前的尝试未生效核心有两个问题:

  • sys.path.append(./../algosec) 使用了相对路径,打包后程序运行时的工作目录和开发环境不一致,相对路径直接失效
  • 仅添加--hidden-import algosec参数但未告知PyInstaller本地algosec模块的存放路径,PyInstaller默认仅检索已安装的site-packages目录,找不到项目子目录下的本地模块

分步操作

  1. 修正运行时路径逻辑
    在项目入口文件algobot_packer/algobot.py的最开头(所有其他导入语句之前)添加以下代码,兼容开发、打包后两种场景的路径识别:
import os
import sys
# 统一获取项目根目录路径
if getattr(sys, 'frozen', False):
    # 打包后运行场景
    BASE_DIR = os.path.dirname(sys.executable)
else:
    # 开发环境运行场景
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 将项目根目录加入Python搜索路径
sys.path.insert(0, BASE_DIR)
  1. 调整PyInstaller打包参数
    在项目根目录(包含algobot、algosec、algobot-packer的顶层目录)执行打包命令,新增--paths参数指定项目根目录,同时补全algosec子模块的隐式导入声明:
# 先清空历史打包缓存
rm -rf build dist *.spec
# 执行打包(类Unix系统)
pyinstaller --onefile \
--paths ./ \
--hidden-import algosec \
--hidden-import algosec.models \
--add-data "./algosec:./algosec" \
algobot_packer/algobot.py

# Windows系统打包请把add-data参数的冒号换成分号:
# --add-data "./algosec;./algosec"
  1. 验证虚拟环境一致性
    确保执行打包命令时使用的是Pipfile对应的虚拟环境内的PyInstaller,不要调用全局安装的PyInstaller,避免虚拟环境内登记的algosec依赖无法被识别。

如果之前曾打包成功后续反复失败,几乎都是PyInstaller历史缓存未清理导致,每次打包前必须删除build、dist文件夹和后缀为.spec的配置文件,再执行打包命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:54:00