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

使用Flet打包含languages文件夹的Python程序后文件读取失败问题

解决Flet打包后找不到资源文件的问题

核心问题原因

打包后程序的资源文件会被PyInstaller(Flet pack基于它)放到临时目录,而非exe所在的当前工作目录,直接用相对路径./languages/xxx会找不到文件;另外Windows系统下--add-data的分隔符需要用分号,而非冒号。

解决步骤

1. 修正打包命令

根据操作系统调整--add-data参数的分隔符:

  • Windows系统:
    flet pack main.py --add-data="languages;languages"
    
  • Linux/macOS系统:
    flet pack main.py --add-data="languages:languages"
    

2. 修改代码中的路径读取逻辑

在代码中添加动态获取资源路径的函数,替代硬编码的相对路径:

import sys
import os

def get_resource_path(relative_path):
    try:
        # 打包后PyInstaller生成的临时资源目录路径
        base_path = sys._MEIPASS
    except Exception:
        # 开发模式下使用当前工作目录
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

# 读取文件时使用该函数获取路径
file_path = get_resource_path("languages/langname.txt")
with open(file_path, encoding="utf-8") as f:
    content = f.read()

3. 处理非文本资源文件

对于非.txt的资源文件,同样使用get_resource_path函数获取路径,比如加载图片:

image_path = get_resource_path("languages/icon.png")
# 后续用该路径加载资源即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:48:20