pyinstaller將資源文件打包進exe中


在網上看了很多博客,終於找到了符合自己智商可理解的打包資源文件方法,現引用如下
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')
"""


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM