gpt4 book ai didi

python - 使用pyinstaller打包可执行python时如何添加相对目录?

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:42 26 4
gpt4 key购买 nike

我有一个具有以下文件树的 python 项目:

\main_dir
gui.py
data.py
\lib
\files
file1.txt
file2.txt
... more_dirs and files in lib.

gui.py进口data.py . data.py解析 file1.txt作为构造函数的一部分。我想跑 gui.py作为 Windows 中的可执行文件,因此使用 pyinstaller。

data.py打开file1.txt whlie 使用相对路径:file1_dir = os.path.join(os.path.curdir, "lib", "files")

我运行以下命令:

pyinstaller "..fullpath..\main_dir\gui.py" -p "..fullpath..\main_dir\" --runtime-hook "..fullpath..\main_dir\lib"

pyistaller成功打包data.py但是当运行可执行文件时,出现以下错误:

“FileNotFoundError:系统找不到指定的路径:'.\lib\files\'

我尝试将钩子(Hook)更改为 <fullpath>\main_dir\lib\files但得到了同样的错误。

我做错了什么?如何将相关目录和文件添加到可执行文件?

最佳答案

如果我理解正确你不需要使用--runtime-hook它是为了在你的主脚本开始之前运行另一个脚本,例如如果你添加--runtime-hook=file1.py 在您的命令中,运行时的执行顺序为:1) 运行 file1.py,2) 运行您的主脚本。 (当然它们已经被编译/打包成一个exe文件了)

因此在您的情况下,您使用 gui.py 导入 data.py,并且 data.py 文件进行操作lib 中。您不需要在 pyinstaller 命令中包含 lib,只需将它与编译后的 exe 文件放在同一个文件夹中,它会自动查找文件,就像在你的 data.py;如果你愿意,你可以将它们(lib 中的文件)作为 datas 包含在你的规范文件中,这样这些文件将在编译时被复制到目标文件夹(exe 文件所在的同一文件夹),但这真的没有必要。

同时删除 -p 因为你所有的脚本(gui.pydata.py)都在同一个文件夹中,不需要告诉pyinstaller 在其他地方搜索imports

关于python - 使用pyinstaller打包可执行python时如何添加相对目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com