以下是软件链接: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. Sqoop连接数据库MySQL报错

    1.问题描述 (1)问题示例: [Hadoop@master TestDir]$ sqoop list-databases --connect jdbc:mysql://master:3306/ -- ...

  2. Java VSCode 基础教学

    VSCode 超全设置1.下载2.插件安装3.项目创建4.设置5.快捷键6.优化7.导出 Jar 包 VSCode 超全设置 VSCode(Visual Studio Code) 是一款 Micros ...

  3. 117、商城业务---分布式事务---RabbitMQ延时队列

    1.定时任务存在的问题 即任务过期时间为30min,任务在第31min过期,但是在第60分钟才被扫描到 2.延时队列 是先设置一个过期队列,里面消息过期后不会丢弃而是通过交换机放到另一个队列中.从这个 ...

  4. Java-14流Stream【创建一个简易for循环工具】

    Java-14流Stream 构造简易的循环取代for IntStream类提供了一个range()方法,可以生成一个流----由int值组成的序列 import static java.util.s ...

  5. vsftpd配置FTP服务器(Centos7.x安装)

    安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | grep vsftpdvsftpd-2.2.2-24.el6.x86_64 如果有展示则已经安装,不需要重新安装 ...

  6. Java并发小结01

    Java并发小结01 主要参考自<实战Java高并发程序设计>. 需要知道的概念 - 同步与异步 - 并发与并行 - 临界区 - 阻塞与非阻塞 - 死锁.饥饿.活锁 同步与异步 同步:同步 ...

  7. 2019徐州网络赛 M Longest subsequence 序列自动机

    题目链接https://nanti.jisuanke.com/t/41395 题意:给两个字符串,s和t,在s中求字典序严格大于t的最长子序列. 思路:分类讨论即可.先建个s的序列自动机. 1 如果有 ...

  8. Double-Checked Locking 双重检查锁问题

    Code Correctness: Double-Checked Locking Abstract Double-checked locking 是一种不正确的用法,并不能达到预期目标. Explan ...

  9. Eclipse安装和配置环境教程(图文详解)

    前言 在上一篇文章中,壹哥给大家介绍了Notepad++这个更高级点的记事本,它进行Java开发相比windows自带的记事本要更方便一些.但是即便如此,用这种记事本进行Java开发效率依然很低.如果 ...

  10. 通过 poe 免费使用ChatGPT、GPT-4

    poe 是由美版知乎 Quora 构建的AI 产品,提供实时在线与多个AI 机器人交流.Quora 于去年 12 月首次推出Poe 作为封闭测试版,并于2月份向所有 iOS 用户开放.支持 web 端 ...