小编Mak*_*akJ的帖子

pyinstaller exe 识别相对路径而不是绝对路径

我正在使用 pyinstaller 从脚本创建 EXE。脚本和exe的位置如下:

脚本:root-dir\subdir1\subdir2\src\scriptabc.py

exe:root-dir\subdir1\subdir2\exe\scriptabc.exe

要创建 Exe,我从 Exe 目录运行 cmd 命令。

pyinstaller -F -i ABC.ico "..\src\scriptabc.py" 
Run Code Online (Sandbox Code Playgroud)

生成的文件在 Exe 文件夹中正确创建,可执行文件在 dist 文件夹中。然后我将可执行文件复制到 Exe 文件夹中,使其与 src\scriptabc.py 文件处于相同的深度级别,并参考根目录。

当我运行 exe 时,我使用相对路径的所有代码项,例如

wb_assets = load_workbook(filename = '..//input//01_assets.xlsx')
Run Code Online (Sandbox Code Playgroud)

运行就好。

但是,当代码使用 pathlib 进行绝对路径评估时,它失败并显示以下错误:

File "pathlib.py", line 587, in __getitem__
IndexError: 3
[8920] Failed to execute script scriptabc
Run Code Online (Sandbox Code Playgroud)

我正在使用 pathlib 建立根目录的绝对路径,如下所示:

from pathlib import Path

abspath = Path(__file__).resolve() # resolve to relative path to absolute
rootpath = abspath.parents[3] # root-dir
Run Code Online (Sandbox Code Playgroud)

一旦我建立了根路径,有很多代码会为其他子目录创建路径。

所以这个索引号在使用 src*.py 文件夹时工作正常 为什么它会为位于 exe*.exe …

python windows pyinstaller pathlib

5
推荐指数
0
解决办法
1610
查看次数

标签 统计

pathlib ×1

pyinstaller ×1

python ×1

windows ×1