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

深度学习模型数据集相对路径配置及PyInstaller路径错误排查

解决PyInstaller打包后数据集路径错误问题

问题背景

我开发了一个深度学习模型,Images数据集文件夹和Python脚本都放在FINAL目录里。现在要通过PyInstaller(用Auto-py-to-exe)把.py脚本转成Windows可执行文件,再用NSIS做安装程序。除了路径错误,其他功能都正常。

当前代码用了硬编码的绝对路径,导致只有我自己的电脑能运行,其他用户得改路径重新打包才行。我试了用sys._MEIPASS写的resource_path函数,但没起作用,现在报找不到路径的错。

当前代码

def resource_path(relative_path):                                #Installs relative path over hard-coded path for EXE file to work
    """ Get absolute path to resource, works for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

model=1
path= resource_path(r'C:\Users\Nitin_Sethi-PC\Desktop\PS-I\FINAL\Images')

报错信息

Traceback(most recent call last):
    File "guifinal-exe.py", line 105, in <module>
    File "guifinal-exe.py", line 57 in load_images_from_folder
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\Nitin_Sethi-PC\\Desktop\\PS-I\\FINAL\\Images\\Benign'
[8112] Failed to execute script 'guifinal-exe' due to unhandled exception!

解决方案

1. 修正相对路径的使用

你现在核心问题是把绝对路径传给了resource_path函数,这完全浪费了这个函数的作用。resource_path本来就是用来接收相对路径,自动拼接成正确的绝对路径(不管是开发环境还是打包后的临时目录)。

把路径改成纯相对路径,直接传'Images'就行,因为脚本和Images在同一个FINAL目录下:

path = resource_path('Images')

2. 让PyInstaller打包时带上Images文件夹

光改代码没用,PyInstaller默认不会自动打包你的数据集文件夹,必须明确告诉它要包含这个目录:

  • 如果用Auto-py-to-exe:找到"Additional Files"选项,点击"Add Folder"选你的Images文件夹,目标路径设为./Images(或者直接留空,默认会放到EXE的根目录)。
  • 如果用命令行PyInstaller:加--add-data参数,比如:
pyinstaller --onefile --add-data "Images;./Images" guifinal-exe.py

(Windows下用分号分隔源和目标,Linux/macOS用冒号)

3. 确认路径逻辑

修改后,resource_path函数会在两种场景下正常工作:

  • 开发阶段:base_path是当前脚本所在的FINAL目录,拼接'Images'后就是正确的数据集路径。
  • 打包后运行:PyInstaller会把Images文件夹解压到临时目录,sys._MEIPASS指向这个临时目录,拼接后就能找到数据集。

4. NSIS安装程序的注意事项

用NSIS做安装程序时,要确保安装过程中把Images文件夹和EXE文件放到同一个目录下。这样用户安装后,EXE运行时会自动在当前目录找到Images,不用额外配置。

测试步骤

  1. 改完代码先在本地跑一遍,确认路径正确,模型能加载Images里的文件。
  2. 用Auto-py-to-exe或命令行重新打包,确保Images被包含进去。
  3. 把生成的EXE放到其他电脑或者自己换个目录测试,确认不会再报路径错误。
  4. 用NSIS制作安装程序时,把EXE和Images文件夹都设为安装文件,指定它们安装到同一个目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:36:33