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

PyInstaller打包书店管理程序exe运行提示找不到livros.csv文件求助

问题原因

报错触发的核心是PyInstaller --onefile 模式的运行机制和资源路径引用不匹配:

  • --onefile 打包的exe运行时会先解压所有文件到系统临时目录,你代码中直接用相对路径'livros.csv'读取文件时,会优先找临时目录下的文件,而你打包时没有把csv文件一同打包进exe,自然找不到文件。
  • 就算你把csv放在exe同目录,代码写死的相对路径默认寻址路径是临时目录,也会读不到。
解决步骤

方法1:将csv文件打包进exe(适合csv不需要后续修改的场景)

  1. 先修改你代码中的路径读取逻辑,兼容开发和打包后的两种运行场景,新增路径处理函数:
import os
import sys
import pandas as pd

def get_resource_path(relative_path):
    try:
        # PyInstaller运行时的临时目录变量
        base_path = sys._MEIPASS
    except AttributeError:
        # 开发环境下取当前项目根目录
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

# 替换你原有的pd.read_csv调用
df = pd.read_csv(get_resource_path("livros.csv"))
  1. 修改打包命令,指定把livros.csv作为资源打包:
    • Windows系统执行:
      pyinstaller --onefile --add-data "livros.csv;." main.py
    • MacOS/Linux系统执行:
      pyinstaller --onefile --add-data "livros.csv:." main.py

方法2:csv和exe分开放(适合csv需要后续编辑更新的场景)

直接修改代码读取exe所在目录的csv文件,不需要把csv打包进exe:

import os
import sys
import pandas as pd

# 获取exe文件所在的文件夹路径
exe_dir = os.path.dirname(os.path.abspath(sys.executable))
csv_path = os.path.join(exe_dir, "livros.csv")
df = pd.read_csv(csv_path)

打包时用你原来的命令pyinstaller --onefile main.py即可,打包完成后把livros.csv和生成的exe放在同一个文件夹下就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:27:03