在网上看了很多博客,终于找到了符合自己智商可理解的打包资源文件方法,现引用如下
https://www.cnblogs.com/darcymei/p/9397173.html
https://blog.csdn.net/sinat_27382047/article/details/81304065
"""
终于把资源文件加载进去了,就是当exe文件移植后,它运行的时候会产生一个临时文件夹,把资源文件存储到临时文件夹内才可以加载移植,
在我的软件主程序aa.py中增加了一段代码,就是实现相对路径到绝对路径的抓换。
coding:utf-8
import sys
import os
生成资源文件目录访问路径
def resource_path(relative_path):
if getattr(sys, 'frozen', False): #是否Bundle Resource
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
访问res文件夹下a.txt的内容
filename = resource_path(os.path.join("res","a.txt"))
print(filename)
with open(filename) as f:
lines = f.readlines()
print(lines)
f.close()
这段代码太重要了,好好理解,一定要加到主程序中去。
第一步:打包生成spec文件
pyinstaller -Fw aa.py -i favicon.ico -p GEthernet.py -p vlanifghout.py
第二部:打包生成exe
pyinstaller -F aa.spec
-- mode: python ; coding: utf-8 --
block_cipher = None
a = Analysis(['aa.py'],
pathex=['GEthernet.py', 'vlanifghout.py', 'D:\pythonGUIProject'],
binaries=[],
datas=[('D:\pythonGUIProject\time.jpg','time.jpg'),('D:\pythonGUIProject\favicon.ico','favicon.ico')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='aa',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='aa')
"""