--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')