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

如何将含固定文件路径的Python脚本打包为可跨PC运行的.exe文件

解决PyInstaller打包.exe的文件路径问题

方案一:将资源文件打包进.exe内部

该方案会把xlsx、png文件直接嵌入最终的.exe,用户仅需单独运行.exe即可,无需额外携带文件。

步骤1:修改代码路径引用

替换固定路径为PyInstaller打包后的临时资源路径,通过sys._MEIPASS获取该路径:

import pandas as pd
import sys
import os

# 获取资源文件的动态路径
def get_resource_path(relative_path):
    try:
        # 打包后运行时的临时资源目录
        base_path = sys._MEIPASS
    except Exception:
        # 本地开发调试时的当前脚本目录
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

# 替换原固定路径为动态路径
dados = pd.read_excel(get_resource_path("Dados.xlsx"))

步骤2:PyInstaller打包命令

在命令行执行打包命令,用--add-data参数指定要打包的资源文件(Windows用;分隔路径,macOS/Linux用:):

# Windows系统
pyinstaller --onefile --add-data "Dados.xlsx;." --add-data "xxx.png;." your_script.py

# macOS/Linux系统
pyinstaller --onefile --add-data "Dados.xlsx:." --add-data "xxx.png:." your_script.py
  • --onefile:生成单个.exe文件
  • --add-data "文件名;目标路径":指定资源文件,.表示资源会被放到exe同层级的临时目录

方案二:使用相对路径(资源与.exe共存)

该方案要求用户将xlsx、png文件和.exe放在同一文件夹,代码自动读取同目录下的资源,无需嵌入exe内部。

修改代码路径引用

获取当前.exe所在目录,拼接资源文件路径:

import pandas as pd
import os

# 获取当前脚本/EXE的所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接资源文件的完整路径
dados_path = os.path.join(current_dir, "Dados.xlsx")
dados = pd.read_excel(dados_path)

打包命令

直接执行单文件打包命令即可:

pyinstaller --onefile your_script.py

打包完成后,把Dados.xlsx和xxx.png复制到.exe所在文件夹,用户点击.exe就能正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:01:46