以下是软件链接: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打包工具的更多相关文章

  1. $python打包工具pyinstaller的用法

    pyinstaller是一个很好用的python打包工具,在Windows环境下可以将python脚本打包成一个exe可执行文件,并且脚本中所依赖的各种第三方库在打包时候都会被统一处理到一起,这样打包 ...

  2. Python打包工具setuptools的使用

    将我们写的Python程序发布成包后,可以使其能够安装使用. 在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试. setuptools是常用的打包工具. 一个简单 ...

  3. python打包工具pyinstaller的使用

    安装PyInstaller pip install pyinstaller 安装完后,检查安装成功与否: pyinstaller --version 安装成功后,就可以使用下面的命令了: pyinst ...

  4. python打包工具 --- pyinstaller

    安装 安装python并添加到环境变量之后,在终端执行如下命令即可: pip install pyinstaller 截图如下: 若安装失败,可到: https://www.lfd.uci.edu/~ ...

  5. python打包工具distutils、setuptools分析

    在上一篇博文中总结了python中导入包,安装包一条完整的线路.其中有一个有意思的知识点,安装包的方式有很多种,模块和包管理中打包,发布,安装也是值得研究的内容. python中安装包的方式有很多种: ...

  6. Python打包工具

    打包Python应用,使用工具: 1.Linux和Windows下,使用pyinstaller pyinstaller -F -w XXX.py 在当前文件夹下生成两个文件夹:build .dist ...

  7. 使用pyinstaller将Python打包为exe文件

    当我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,那么pyInstaller就是一个很好的选择.pyInstaller可以将 ...

  8. python打包工具distutils、setuptools的使用

    python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) ...

  9. Pyinstaller(python打包为exe文件)

      需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...

  10. python打包工具 cx_Freeze介绍

    原理 Python 脚本在装有 Python 的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装 Python 及依赖库即可像运行普通程序一样 ...

随机推荐

  1. [Vue warn]: Duplicate keys detected: ''. This may cause an update error. found in

    原因: 使用element-ui 导致 使用路由模式之后  index 没写 导致 解决办法: 删掉  或者天添加路由

  2. python 猜数字

    方法一 import randomif __name__ == '__main__':    yourname = input("你好! 你的名字是什么?\n");    prin ...

  3. Strimzi-Kafka-Operator外围小记

    Strimzi-Kafka-Operator 从不同的角度看下Operator解决的问题 Kafka管理Operator-https://github.com/strimzi/strimzi-kafk ...

  4. 在.net core中开发web页面,更新html代码刷新不生效的问题

    因为在.net core之后的版本,程序都是以控制台应用程序的方式存在,所以一些老的项目升级后,会出现这样的情况, 解决方法,在nuget中引入 Microsoft.AspNetCore.Mvc.Ra ...

  5. 如何单机部署多个 MySQL 8.0 实例 ?

    在服务器资源有限的情况下,可利用该方案快速搭建各类 mysql 架构方案.各 MySQL 实例共享一个 mysqld 主程序,但各实例数据目录是独立的,存放在不同的文件夹中:好了.废话不多说,直接上干 ...

  6. 关于在vue3中使用vuex与在vue2中使用vuex的区别

    首先vue2中vuex版本是4.x以下,vue3中使用vuex需要保证vuex版本在4.x及以上. 以下说一说怎么在vue3中使用vuex,与vue2大同小异 首先在views新建一个store文件夹 ...

  7. 数据文件的读写—R实现

    数据文件的读写 在R语言中可以读写的最基本的数据格式就是text,以及csv文件.用read.table()或者read.csv函数就可以,相应的写入函数是write.table(),write.cs ...

  8. 【入门排坑】Windows之间使用OpenSSH的ssh免密登录,排坑

    安装 安装OpenSSH 需要安装OpenSSH客户端和服务器,win10自带客户端,我们安装服务器即可. 设置 -- 应用 -- 可选功能 -- 添加 -- 添加 OpenSSH 服务器 配置 公钥 ...

  9. python之爬虫二

    10正则表达式 正则表达式(regular expression)是一种字符串匹配模式或者规则,它可以用来检索.替换那些符合特定规则的文本.正则表达式几乎适用于所有编程语言,无论是前端语言 JavaS ...

  10. [数据库/ORALCE]导入/导出数据

    ORACLE数据导入/导出 工具介绍:EXP/IMP | EXPDP/IMPDP EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序 ...