如何在使用pyinstaller打包可执行python时添加相对目录?
我有一个python项目,它有以下文件树:如何在使用pyinstaller打包可执行python时添加相对目录?,python,relative-path,pyinstaller,Python,Relative Path,Pyinstaller,我有一个python项目,它有以下文件树: \main_dir gui.py data.py \lib \files file1.txt file2.txt ... more_dirs and files in lib. gui.py导入data.pydata.py解析file1.txt作为it构造函数的一部分。 我想在windows中作为可执行文件运行gui.py,因此使用pyinstaller
\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
作为it构造函数的一部分。
我想在windows中作为可执行文件运行gui.py
,因此使用pyinstaller
data.py
使用相对路径打开file1.txt
whlie:file1\u 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”
我试图将钩子更改为\main\u dir\lib\files
,但得到了相同的错误
我做错了什么?如何将相对目录和文件添加到可执行文件?如果我理解正确,您不需要使用
--运行时钩子,它用于在主脚本启动之前运行另一个脚本,例如,如果您在命令中添加--运行时钩子=file1.py
,则运行时的执行顺序为我的任务是:1)运行file1.py
,2)运行主脚本(当然它们已经编译/打包到exe文件中了)
因此,在您的例子中,您可以使用gui.py
导入data.py
,并且data.py
操作lib
中的文件。您不需要在pyinstaller
命令中包含lib
,只需将其与编译的exe文件放在同一文件夹中,它就会像在y中一样自动查找文件我们的data.py
;如果您愿意,可以将它们(lib中的文件)作为datas
包含在您的spec文件中,这样在编译时这些文件将复制到目标文件夹(exe文件所在的同一文件夹),但实际上并不需要
同时删除-p
,因为所有脚本(gui.py
和data.py
)都在同一个文件夹中,所以无需告诉pyinstaller
在其他位置搜索导入