--add-data
选项允许你将额外的非代码文件(如数据文件、配置文件)添加到打包后的应用程序中;
程序运行时,PyInstaller 引导程序会将这些文件解压到一个临时目录,路径存储在sys._MEIPASS
中;
添加和访问资源
将以下内容保存到mydata.txt
中,作为程序的数据使用,该文件将被打包到程序中:
hello world
编写代码,得到mydata.txt
的完整路径,并从中读取内容:
import sys
import os
def get_source_path(relative_path):
if hasattr(sys,'_MEIPASS'):
# 表示程序运行在打包后
base_path = sys._MEIPASS
else:
# 表示程序还未打包
base_path = os.path.abspath(".")
return os.path.join(base_path,relative_path)
#得到文件的正确路径
data_file_path = get_source_path('mydata.txt')
with open(data_file_path, 'r') as f:
print(f.read())
将代码保存为myscript.py
;
使用--add-data
选项进行打包:
pyinstaller -F myscript.py --add-data mydata.txt:.
也可改变资源的位置:
pyinstaller -F myscript.py --add-data mydata.txt:data2
读取路径也将变为:
data_file_path = get_source_path('data2/mydata.txt')