pyinstaller exe可以识别相对路径,但不能识别绝对路径

时间:2019-01-04 03:38:32

标签: python windows pyinstaller pathlib

我正在使用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" 

在Exe文件夹中正确创建了结果文件,而在dist文件夹中则创建了可执行文件。 然后,我将可执行文件复制到Exe文件夹中,以使其与src \ scriptabc.py文件具有相同的深度级别,并引用了root。

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

wb_assets = load_workbook(filename = '..//input//01_assets.xlsx')

运行正常。

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

File "pathlib.py", line 587, in __getitem__
IndexError: 3
[8920] Failed to execute script scriptabc

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

from pathlib import Path

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

建立根路径后,有很多代码可以为其他子目录创建路径。

因此,当使用src * .py文件夹时,此索引号可以正常工作 为什么坐在exe * .exe文件夹中的exe出现错误?

文件选项是否仅查看脚本文件名? 因为如果是深度,则exe和src文件夹的深度完全相同。

如果我将粘贴复制到src文件夹中并从那里运行,则exe文件运行良好。 在我的exe发行版中,我只是根本不想拥有src文件夹,请尽可能让代码从exe文件夹运行。

有人可以帮忙吗?

问题的第二部分是我正在寻找包含所有dll文件的规范脚本(我希望将它们捆绑在exe中,而不是在每台计算机上都安装redist软件包。我拥有SDK和所有必需的dll文件在我的计算机上)。我需要问另一个问题吗?

0 个答案:

没有答案