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

PyInstaller添加--paths参数仍报ModuleNotFoundError问题求助

根因说明

你遇到的导入错误核心是两点:

  1. PyInstaller打包时仅能自动识别显式导入的模块,cameratraps和ai4eutils属于本地非安装的第三方脚本目录,其内部的相对导入路径无法被自动识别。
  2. 你之前配置的本地绝对路径、环境变量PYTHONPATH仅在开发环境生效,--onefile模式打包后的可执行文件运行时会解压到系统临时目录,运行环境不存在你本地的目录结构,自然无法找到对应模块。

具体解决步骤

  1. 修改ImSep_GUI.py开头的路径配置,替换你之前写死的绝对路径,用动态相对路径添加模块搜索目录,确保打包后运行时也能正确找到依赖目录:
import sys
import os
# 获取当前脚本的绝对路径
current_script_path = os.path.abspath(__file__)
# 定位到ImSep_files根目录
imsep_root = os.path.dirname(os.path.dirname(current_script_path))
# 优先将依赖目录加入搜索路径
sys.path.insert(0, os.path.join(imsep_root, "ai4eutils"))
sys.path.insert(0, os.path.join(imsep_root, "cameratraps"))
  1. 调整打包执行路径和参数,不要在ImSep子目录执行打包命令,切换到ImSep_files根目录执行,同时用--add-data参数将两个依赖目录完整打包到程序中,OSX下路径分隔符用冒号:
conda activate imsepcondaenv
cd ~/Applications/ImSep_files
pyinstaller --onefile --windowed \
--name='ImSep' \
--icon='ImSep/imgs/logo_small_bg.icns' \
--hidden-import detection.run_tf_detector \
--add-data "./ai4eutils:ai4eutils" \
--add-data "./cameratraps:cameratraps" \
ImSep/ImSep_GUI.py
  1. 打包完成后,生成的可执行文件在ImSep_files/dist目录下,直接运行即可。

额外说明

如果不需要单文件打包,也可以去掉--onefile参数,打包后直接把ai4eutils和cameratraps文件夹放到生成的ImSep.app同目录,也能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:15:06