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

使用PyInstaller打包EXE时导入自定义包遇文件找不到错误

问题原因与解决方法

为什么会出现临时路径的错误?

PyInstaller打包时会把所有Python代码和依赖打包成一个可执行文件,运行时会自动解压到系统临时目录(就是报错里的C:\\Users\\LUTZMO~1\\AppData\\Local\\Temp\\_MEIxxxxxx\\路径),然后在这个临时目录里执行程序。

你的问题有两个核心原因:

  1. 代码中使用相对路径读取xliff.json,本地运行时路径正确,但打包后程序的工作目录或文件结构变化,导致路径失效;
  2. PyInstaller默认不会自动打包.json这类非Python代码的资源文件,所以xliff.json没有被包含到EXE中,自然在临时目录找不到。

解决步骤

1. 修正资源文件的读取逻辑

不要用相对路径,而是基于包的位置获取资源的绝对路径,推荐用Python3.7+内置的importlib.resources模块:

import json
from importlib.resources import files

# 在xliff.py中修改读取xliff.json的代码
def load_xliff_namespaces():
    # 获取包内资源的路径
    json_file = files("ldm.xliff.data.namespaces").joinpath("xliff.json")
    with open(json_file, 'r', encoding='utf-8') as f:
        return json.load(f)

如果需要兼容Python3.7以下版本,可以用pkg_resources:

import json
import pkg_resources

def load_xliff_namespaces():
    json_path = pkg_resources.resource_filename("ldm.xliff.data.namespaces", "xliff.json")
    with open(json_path, 'r', encoding='utf-8') as f:
        return json.load(f)

2. 让PyInstaller包含资源文件

有两种方法可以告诉PyInstaller要打包xliff.json:

方法一:命令行直接指定

假设你的项目结构如下:

your_project/
├── ldm/
│   ├── xliff/
│   │   ├── __init__.py
│   │   ├── xliff.py
│   │   └── data/
│   │       └── namespaces/
│   │           └── xliff.json
└── pre_tran.py

执行打包命令时用--add-data参数:

# Windows系统用分号分隔源路径和目标路径
pyinstaller --add-data "ldm/xliff/data/namespaces/xliff.json;ldm/xliff/data/namespaces/" pre_tran.py

# Linux/macOS系统用冒号分隔
pyinstaller --add-data "ldm/xliff/data/namespaces/xliff.json:ldm/xliff/data/namespaces/" pre_tran.py
方法二:使用.spec文件(更灵活)
  1. 先生成spec文件:
pyinstaller --name pre_tran pre_tran.py
  1. 打开生成的pre_tran.spec,找到datas列表,添加资源文件的映射:
a = Analysis(
    ['pre_tran.py'],
    pathex=[],
    binaries=[],
    # 在这里添加datas
    datas=[('ldm/xliff/data/namespaces/xliff.json', 'ldm/xliff/data/namespaces')],
    ...
)
  1. 用spec文件重新打包:
pyinstaller pre_tran.spec

3. 验证打包结果

运行生成的EXE文件,如果仍有错误,可以临时在代码中打印资源文件的路径,确认是否与临时目录中的实际路径一致,排查路径是否配置正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:35:50