基于pyinstaller的python打包工具
以下是软件链接:https://mysecreat.lanzoub.com/iZPGf0swgtbc
软件功能:可以对py文件进行打包,功能基于pyinstaller模块,因此需要安装python环境,其它不用管,软件会自动检测模块安装情况
分割线-------------------------------------------分割线
以下是源码:
import os, shutil
from configparser import ConfigParser
#配置文件类
class config():
def __init__(self):
self.dist_path=os.getcwd()
self.work_path=self.dist_path+"\\缓存"
self.icon_path=self.dist_path+"\\默认.ico"
self.conf_path=self.dist_path+"\\conf.ini"
self.window_show='no'
self.pyinstaller='no'
self.read_conf()
def config_conf(self):
choice=input("是否使用默认配置?(y/是,n/否)")
if (choice=='y'):
print(f"当前配置如下:\n图标路径:{self.icon_path}\n是否显示窗口:{self.window_show}")
elif(choice=='n'):
self.icon_path=input("请输入图标路径:")
self.window_show=input("是否显示窗口(是:yes 否:no):")
def read_conf(self):
if(os.path.exists(self.conf_path)):
cf=ConfigParser()
cf.read(self.conf_path,encoding='utf-8')
self.work_path=cf['conf']['work_path']
self.dist_path=cf['conf']['dist_path']
self.icon_path=cf['conf']['icon_path']
self.window_show=cf['conf']['window_show']
self.pyinstaller=cf['conf']['pyinstaller']
else:
self.config_conf()
self.save_conf()
def save_conf(self):
cf=ConfigParser()
cf.add_section('conf')
cf.set('conf','work_path',self.work_path)
cf.set('conf','dist_path',self.dist_path)
cf.set('conf','icon_path',self.icon_path)
cf.set('conf','window_show',self.window_show)
cf.set('conf','pyinstaller',self.pyinstaller)
with open(file=self.conf_path,mode="w+",encoding='utf-8') as fp:
cf.write(fp)
#运行主程序
def run():
conf=config()
dist_path=conf.dist_path
work_path=conf.work_path
icon_path=conf.icon_path
window_show=conf.window_show
pyinstaller=conf.pyinstaller
if(pyinstaller=='no'):
install_pyinstaller(conf)
while (True):
wait_path = input("请输入待打包文件路径:")
cache_path_1 = os.getcwd() + r"\build"
cache_path_2 = os.getcwd() + "\\" + os.path.basename(wait_path).rstrip(".py") + ".spec"
if(window_show == 'yes'):
cmd = f"pyinstaller -F -c {wait_path} --distpath {dist_path} -i {icon_path}"
else:
cmd = f"pyinstaller -F -w -c {wait_path} --distpath {dist_path} -i {icon_path}"
try:
print("指令执行成功!")
os.makedirs(work_path, exist_ok=True)
os.system(cmd)
shutil.rmtree(work_path, ignore_errors=True)
shutil.rmtree(cache_path_1, ignore_errors=True)
os.remove(cache_path_2)
except:
print("指令执行失败!")
os.system("pause")
os.system("cls")
#检测是否安装pyinstaller模块
def install_pyinstaller(conf):
cmd="pip install pyinstaller"
os.system(cmd)
os.system("cls")
conf.pyinstaller='yes'
conf.save_conf()
if __name__ == '__main__':
run()
基于pyinstaller的python打包工具的更多相关文章
- $python打包工具pyinstaller的用法
pyinstaller是一个很好用的python打包工具,在Windows环境下可以将python脚本打包成一个exe可执行文件,并且脚本中所依赖的各种第三方库在打包时候都会被统一处理到一起,这样打包 ...
- Python打包工具setuptools的使用
将我们写的Python程序发布成包后,可以使其能够安装使用. 在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试. setuptools是常用的打包工具. 一个简单 ...
- python打包工具pyinstaller的使用
安装PyInstaller pip install pyinstaller 安装完后,检查安装成功与否: pyinstaller --version 安装成功后,就可以使用下面的命令了: pyinst ...
- python打包工具 --- pyinstaller
安装 安装python并添加到环境变量之后,在终端执行如下命令即可: pip install pyinstaller 截图如下: 若安装失败,可到: https://www.lfd.uci.edu/~ ...
- python打包工具distutils、setuptools分析
在上一篇博文中总结了python中导入包,安装包一条完整的线路.其中有一个有意思的知识点,安装包的方式有很多种,模块和包管理中打包,发布,安装也是值得研究的内容. python中安装包的方式有很多种: ...
- Python打包工具
打包Python应用,使用工具: 1.Linux和Windows下,使用pyinstaller pyinstaller -F -w XXX.py 在当前文件夹下生成两个文件夹:build .dist ...
- 使用pyinstaller将Python打包为exe文件
当我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,那么pyInstaller就是一个很好的选择.pyInstaller可以将 ...
- python打包工具distutils、setuptools的使用
python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) ...
- Pyinstaller(python打包为exe文件)
需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...
- python打包工具 cx_Freeze介绍
原理 Python 脚本在装有 Python 的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装 Python 及依赖库即可像运行普通程序一样 ...
随机推荐
- Leecode 21.合并两个有序链表(Java 迭代、递归两种方法)
想法: 1.迭代 设两个指针pa和pb,不断移动pa和pb,并进行比较,则将较小元素接到新链表,该过程直至pa或pb为null,之后将未空的接到已空之后,得到升序链表 1 //官方: 2 cl ...
- loadrunner获取当前年月日时分秒 时间
loadrunner获取当前年月日时分秒 时间 lr_save_datetime ("%Y-%m-%d %H:%M:%S",DATE_NOW+TIME_NOW,"crea ...
- python练习--1
ID_CARD = input("Input your ID Card: ") length = len(ID_CARD) if length < 5: NEW_ID_CAR ...
- 虚拟环境 venv的使用--(venv 一)
一.引言最近在学习<Flask Web Development 2nd Edition>的时候,作者开篇就介绍如何使用 venv 来管理 Python 环境 .自我觉得作者讲的非常好,想要 ...
- jmeter设置中文
jmeter.properties #language=enlanguage=zh_CN
- Linux shell字符操作总结
各符号介绍 字符串长度统计 ${#string}: 字符串string的长度 字符串截取 ${string#*substring}: 从左到右截取特定字符substring第一次出现位置之后的字符串 ...
- Android Studio报错--Build failed with an exception.
错误描述 在代码写好之后,点击运行,会爆出这样的错误,查看日志,发现是Manifest.xml文件爆出来的错误 具体解决 我的错误没有别的版本那么麻烦,就是我建立了Empty Activity之后,我 ...
- Javaweb学习笔记第六弹
本章节的存在意义是:学到PreparedStatement反应较慢,理解不透彻,来做个比较,加深印象 详细讲述PrepareStatement 与 Statement 连接数据库的部分区别 在我学习的 ...
- 【SpringBoot】还不会SpringBoot项目模块分层?来这手把手教你
前言 缘由 经常看到网上很多优秀的开源项目中,代码简洁,模块分层完美.反观自己代码层级混乱,,却不知如何整理分层.此文手把手教你一步一步创建模块,左手右手一个慢动作.结合本人实际开发及个人项目中分层思 ...
- 创业团队如何落地敏捷测试,提升质量效能?丨声网开发者创业讲堂 Vol.03
前言 老牛是资深测试专家.技术架构师.具备多年互联网公司从业经验以及十多年一线研发经验.同时也是 DevOps 践行者,近几年兼任质量团队的管理工作.其中,负责的某技术平台,稳定运行两年多,累计调用量 ...