专栏推荐
- 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。
链接>>>>>>>>>
《Redis从头学》 - SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。
链接>>>>>>
《SpringBoot实战》
🌟前言
前不久写了一个JDK多版本切换的小工具,打包时涉及到外部配置文件,经过查阅资料找到了方法。在此记录一下。
🌟环境准备
以下环境建立在有Python基础环境的基础上。
引入Pyinstaller
pip install pyinstaller
🌟代码中配置文件路径
在自己的主程序中加入如下代码,并将程序中设计到文件路径的地方替换成下方程序中文件路径变量config_file
import os
import sys
# 获取当前文件所在目录的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接外部配置文件的完整路径
config_file = os.path.join(current_dir, 'jdk.conf')
# 读取外部配置文件内容
with open(config_file, 'r') as f:
config_data = f.read()
# 运行exe文件时使用如下代码:
# 获取exe文件所在目录的绝对路径
exe_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
# 拼接外部配置文件的完整路径
config_file = os.path.join(exe_dir, 'jdk.conf')
🌟创建版权信息TXT
创建version.txt,注意要放在自己打包程序的同级目录下,将相关信息按照下方代码中的注释进行修改即可。
# UTF-8
VSVersionInfo(
ffi=FixedFileInfo(
#filevers和prodvers应该始终是包含四个项的元组:(1、2、3、4),将不需要的项设置为0
filevers=(0, 0, 1, 0), # 文件版本******,鼠标悬浮exe会显示,也显示在 详细信息-文件版本,这个是检测版本的依据
prodvers=(4, 6, 9, 4), # 生产商,未见显示在哪里
mask=0x3f, # 两个位掩码
flags=0x0,
OS=0x4, # 为其设计此文件的操作系统,0x4-NT,无需更改它
fileType=0x1, # 文件的常规类型,0x1-该文件是一个应用程序
subtype=0x0, # 文件的功能,0x0表示该文件类型未定义
date=(0, 0) # 创建日期和时间戳
),
kids=[
StringFileInfo(
[
StringTable(
u'040904B0',
[StringStruct(u'CompanyName', u'智源恩创网络科技工作室'), # 鼠标悬浮exe会显示
StringStruct(u'FileDescription', u'JDK版本管理工具'), # 文件说明,鼠标悬浮exe会显示,也会显示在 详细信息-文件说明
StringStruct(u'FileVersion', u'1.1.0'), # 没见哪里显示
StringStruct(u'InternalName', u'SVN'),
StringStruct(u'LegalCopyright', u'Copyright(C) 2023 DaenCode'), #版权,会显示在 详细信息-版权
StringStruct(u'OriginalFilename', u'Daen-JDKMAN'), #原始文件名,会显示在 详细信息-原始文件名
StringStruct(u'ProductName', u'Daen-JDKMAN'), #产品名称,会显示在 详细信息-产品名称
StringStruct(u'ProductVersion', u'1.0')]) #产品版本,会显示在 详细信息-产品版本
]),
VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 语言,中文简体
]
)
变量名解释
🌟打包
进入到脚本所在路径,输入以下命令。
pyinstaller -D --version-file version.txt -i .\daen-JDKMAN.ico <script_name>.py
注意:打包完成后需要将配置文件放到exe所在目录中。
🌟效果展示
如果打包完成后若ico不展示,重命名exe文件名即可。
🌟写在最后
有关于Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。