--add-data
选项在不使用--onefile
选项的情况下效果很好
我希望将数据文本文件压缩并合并为exe文件。但是exe文件仅在数据文本文件位于同一文件夹中时有效。
如何将文本文件合并到一个exe文件中?
当我使用时:
pyinstaller --add-data ="\GameUserSettings.ini;." file.py
有效。
pyinstaller --onefile --add-data ="\GameUserSettings.ini;." file.py
它可以制作file.exe
,但效果不佳。并且仅在文本文件位于同一文件夹中时有效。
答案 0 :(得分:0)
当您使用one-dir
添加文本文件时,Pyinstaller会将文件放在可执行文件旁边,通过脚本访问文件(例如open("myfile.txt")
会很好。但是,当您创建自己的文件时,具有--onefile
的可执行文件,它将在一个单独的目录temp目录中提取文件,因此调用open("myfile.txt")
会导致NotFound
错误,因为该文件除了可执行文件之外不存在。因此,您需要更改指向temp目录的路径。sys._MEIPASS
将返回temp目录,因此您需要在其中定位文件。您可以在here中找到更多信息。
像这样的函数可以解决问题:
import sys
import os
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)
然后,您可以使用source = resource_path("myfile.txt")
访问文件。