当前位置: 首页 > article >正文

Python 编译 exe 可执行程序

将Python文件编译为exe可执行程序1. 编写计算器源码2. 安装PyInstaller3. 用 PyInstaller 生成可执行程序4. 设置打包后的版本信息5. 编译.py文件为.exe可执行文件(有版本配置文件)6. 执行.exe文件隐藏cmd窗口Python程序py格式文件的优点是可以跨平台但运行必须有Python环境没有Python环境无法运行py格式文件。有没有方法用户不同安装Python就可直接运行开发的项目工程答案是肯定的。这就涉及到需要将Python的.py格式文件编写的脚本编译成一个系统可执行文件这可用PyInstaller来实现。PyInstaller支持在在Windows/Linux/Mac环境下将Python脚本打包成可执行程序在没有Python环境的机器上运行。注意需要在哪个操作系统平台一运行需在相应的操作系统(或虚拟机)下编译。1. 编写计算器源码import tkinter as tk root tk.Tk()root.title(计算器)root.geometry(295x280100100)font (宋体,20)font_16 (宋体,16)root.attributes(-alpha,0.9)result_num tk.StringVar()result_num.set()tk.Label(root,textvariableresult_num,fontfont,height2,width20,justifytk.LEFT,anchortk.SE).grid(row1,column1,columnspan4)button_clear tk.Button(root,textC,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_back tk.Button(root,text←,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_division tk.Button(root,text÷,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_multiplication tk.Button(root,text×,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_clear.grid(row2,column1,padx4,pady2)button_back.grid(row2,column2,padx4,pady2)button_division.grid(row2,column3,padx4,pady2)button_multiplication.grid(row2,column4,padx4,pady2)button_seven tk.Button(root,text7,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_eight tk.Button(root,text8,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_nine tk.Button(root,text9,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_subtraction tk.Button(root,text-,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_seven.grid(row3,column1,padx4,pady2)button_eight.grid(row3,column2,padx4,pady2)button_nine.grid(row3,column3,padx4,pady2)button_subtraction.grid(row3,column4,padx4,pady2)button_four tk.Button(root,text4,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_five tk.Button(root,text5,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_six tk.Button(root,text6,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_addition tk.Button(root,text,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_four.grid(row4,column1,padx4,pady2)button_five.grid(row4,column2,padx4,pady2)button_six.grid(row4,column3,padx4,pady2)button_addition.grid(row4,column4,padx4,pady2)button_one tk.Button(root,text1,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_two tk.Button(root,text2,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_three tk.Button(root,text3,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_equal tk.Button(root,text,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_one.grid(row5,column1,padx4,pady2)button_two.grid(row5,column2,padx4,pady2)button_three.grid(row5,column3,padx4,pady2)button_equal.grid(row5,column4,padx4,pady2)button_zero1 tk.Button(root,text ,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_zero tk.Button(root,text0,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_dot tk.Button(root,text.,width5,fontfont_16,relieftk.FLAT,bg#eacda1)button_equal2 tk.Button(root,text ,width5,fontfont_16,relieftk.FLAT,bg#b1b2b2)button_zero1.grid(row6,column1,padx4,pady2)button_zero.grid(row6,column2,padx4,pady2)button_dot.grid(row6,column3,padx4,pady2)button_equal2.grid(row6,column4,padx4,pady2)def click_button(x): print(X:\t,x)result_num.set(result_num.get()x)def calculation(): opt_str result_num.get()result eval(opt_str)result_num.set(str(result))def btnClearDisplay(): opt_str result_num.get()result eval(str(opt_str))result_num.set()button_one.config(commandlambda: click_button(1))button_two.config(commandlambda: click_button(2))button_three.config(commandlambda: click_button(3))button_four.config(commandlambda: click_button(4))button_five.config(commandlambda: click_button(5))button_six.config(commandlambda: click_button(6))button_seven.config(commandlambda: click_button(7))button_eight.config(commandlambda: click_button(8))button_nine.config(commandlambda: click_button(9))button_zero.config(commandlambda: click_button(0))button_dot.config(commandlambda: click_button(.))button_addition.config(commandlambda: click_button())button_subtraction.config(commandlambda: click_button(-))button_multiplication.config(commandlambda: click_button(*))button_division.config(commandlambda: click_button(/))button_clear.config(commandlambda: btnClearDisplay())button_equal.config(commandcalculation)root.mainloop()2. 安装PyInstallerpip install pyinstaller3. 用 PyInstaller 生成可执行程序PyInstaller工具的命令语法如下pyinstaller 选项 Python源文件不管这个 Python 应用是单文件的应用还是多文件的应用只要在使用 pyinstaller 命令时编译作为程序入口的 Python 程序即可。PyInstaller工具是跨平台的它既可以在 Windows平台上使用也可以在 Mac OS X 平台上运行。在不同的平台上使用 PyInstaller 工具的方法是一样的它们支持的选项也是一样的。先创建一个文件夹(目录)在该目录下创建一个.py文件(或复制一个.py文件)。然后转命令行窗口(cmb)进入到创建的文件夹(目录)下执行如下命令pyinstaller -F xxx.py执行上面命令将看到详细的生成过程。当生成完成后将会在当前目录下生成一个dist目录并在该目录下看到有一个xxx.exe文件这就是使用PyInstaller工具生成的exe程序。在上面命令中使用了-F选项该选项指定生成单独的exe文件因此在dist目录下生成了一个单独的xxx.exe文件(在Mac OS X平台上生成的文件没有后缀)与-F选项对应的是-D选项(默认选项)该选项指定生成一个目录(包含多个文件)来作为程序。在表1中列出的只是PyInstaller模块所支持的常用选项如果需要了解PyInstaller选项的详细信息则可通过pyinstaller -h来查看4. 设置打包后的版本信息编辑“版本信息文件”此文件为纯文本文件可用.txt扩展名文件名可随意如“file_version_info.txt”。典型的版本信息文件内容如下中文注释是作者为方便读者学习而加的注意红框中的项目。说明1.有关固定文件信息“ffi”的更多详细信息请参阅相关文献2. Translation 中的语言代码Locale ID信息见表2。5. 编译.py文件为.exe可执行文件(有版本配置文件)编辑“版本信息文件”文件名随意但需是文件文件如“myVerInfo.txt”内容如下VSVersionInfo(ffiFixedFileInfo(filevers(1,0,0,23),prodvers(1,0,0,1),mask0x3f,flags0x0,OS0x4,fileType0x1,subtype0x0,date(0,0)),kids[StringFileInfo([StringTable(080403a8,[StringStruct(CompanyName,解东),StringStruct(FileDescription,计算器),StringStruct(FileVersion,1.001),StringStruct(InternalName,计算器.exe),StringStruct(LegalCopyright,解东版权所有),StringStruct(OriginalFilename,test.py),StringStruct(ProductName,Python计算器),StringStruct(ProductVersion,1.005)])]),VarFileInfo([VarStruct(Translation,[2052,936])])])在该目录下执行如下命令pyinstaller -F --version-filemyVerInfo.txt test.py6. 执行.exe文件隐藏cmd窗口使用 PyInstaller 的 --windowed 或 --noconsole 选项pyinstaller -F --windowed --version-filemyVerInfo.txt test.py

相关文章:

Python 编译 exe 可执行程序

将Python文件编译为exe可执行程序1. 编写计算器源码2. 安装PyInstaller3. 用 PyInstaller 生成可执行程序4. 设置打包后的版本信息5. 编译.py文件为.exe可执行文件(有版本配置文件)6. 执行.exe文件隐藏cmd窗口Python程序py格式文件的优点是可以跨平台,但运行必须有P…...

2025届最火的降AI率平台实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 那些用于人工智能论文的辅助工具,正一步一步地变成学术写作里相当重要的助力&…...

2026最权威的六大AI论文网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,于学术范畴内,借助人工智能来辅助学术写作之事已然成了一种趋向…...

Verilog状态机实战:手把手教你设计一个可复用的序列检测器(附完整Testbench)

Verilog状态机实战:构建可配置序列检测器的工程化方法 在数字IC设计中,序列检测器是验证工程师和设计者经常遇到的基础电路模块。传统教程往往聚焦于特定序列(如1001)的检测实现,却很少探讨如何将这类设计转化为可复用…...

CNCF TAG Security自动化治理工具:实现持续安全监控的完整方案

CNCF TAG Security自动化治理工具:实现持续安全监控的完整方案 【免费下载链接】tag-security 🔐CNCF Security Technical Advisory Group -- secure access, policy control, privacy, auditing, explainability and more! 项目地址: https://gitcode…...

终极指南:探索Thrust跨平台应用程序框架的未来

终极指南:探索Thrust跨平台应用程序框架的未来 【免费下载链接】thrust Chromium-based cross-platform / cross-language application framework 项目地址: https://gitcode.com/gh_mirrors/thru/thrust Thrust是一款基于Chromium的跨平台应用程序框架&…...

保姆级教程:三种方法搞定MT7628的OpenWRT交叉编译环境(mipsel-openwrt-linux-gcc)

MT7628交叉编译环境搭建全攻略:三种方法深度解析与实战指南 刚接触MT7628开发板的嵌入式开发者们,是否经常被交叉编译环境搞得焦头烂额?面对各种工具链获取方式,到底哪种最适合你的开发场景?本文将彻底拆解三种主流搭建…...

3步轻松备份你的QQ空间回忆:GetQzonehistory完整使用指南

3步轻松备份你的QQ空间回忆:GetQzonehistory完整使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里那些珍贵的青春记忆会随着时间流逝而消失&#…...

如何构建你的AI克隆:LLM Twin Course完整指南

如何构建你的AI克隆:LLM Twin Course完整指南 【免费下载链接】llm-twin-course 🤖 𝗟𝗲𝗮𝗿𝗻 for 𝗳𝗿𝗲𝗲 how to 𝗯𝘂…...

告别繁琐下载!kill-doc文档下载工具让你轻松获取任何在线文档

告别繁琐下载!kill-doc文档下载工具让你轻松获取任何在线文档 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就…...

JS如何通过WebUploader实现理赔视频的跨浏览器分片断点校验与压缩传输插件?

【一个被4G大文件逼疯的北京码农自述:如何在信创环境下优雅地让政府文件"飞"起来】 各位战友好,我是老张,北京某软件公司前端组"秃头突击队"队长。最近接了个政府项目,客户要求用国产环境上传4G大文件&#x…...

MediaCreationTool.bat:一键解决Windows安装与升级的通用解决方案

MediaCreationTool.bat:一键解决Windows安装与升级的通用解决方案 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.ba…...

Cosmopolitan Libc终极指南:一次编译,到处运行的C语言革命

Cosmopolitan Libc终极指南:一次编译,到处运行的C语言革命 【免费下载链接】cosmopolitan build-once run-anywhere c library 项目地址: https://gitcode.com/GitHub_Trending/co/cosmopolitan Cosmopolitan Libc是一个革命性的C语言库&#xff…...

终极指南:如何用Canvg轻松实现SVG到Canvas的完美转换

终极指南:如何用Canvg轻松实现SVG到Canvas的完美转换 【免费下载链接】canvg JavaScript SVG parser and renderer on Canvas 项目地址: https://gitcode.com/gh_mirrors/ca/canvg Canvg是一个强大的JavaScript SVG解析和渲染库,能够将SVG图像完美…...

从一次线上故障说起:为什么UDP视频流会卡顿?聊聊MTU、PMTUD和巨型帧(Jumbo Frame)的实战选择

从一次线上故障说起:为什么UDP视频流会卡顿?聊聊MTU、PMTUD和巨型帧的实战选择 去年夏天,我们团队遭遇了一次诡异的线上事故——某直播平台的UDP视频流在跨机房传输时频繁出现卡顿,但TCP业务却完全正常。当技术团队排查到第三天时…...

终极指南:如何快速掌握 Protobuf-Go 的高效开发技巧

终极指南:如何快速掌握 Protobuf-Go 的高效开发技巧 【免费下载链接】protobuf-go Go support for Googles protocol buffers 项目地址: https://gitcode.com/gh_mirrors/pr/protobuf-go Protobuf-Go 是 Google Protocol Buffers 在 Go 语言中的官方实现&…...

PyTorch-NLP评估指标完全解析:BLEU与准确率计算方法

PyTorch-NLP评估指标完全解析:BLEU与准确率计算方法 【免费下载链接】PyTorch-NLP Basic Utilities for PyTorch Natural Language Processing (NLP) 项目地址: https://gitcode.com/gh_mirrors/py/PyTorch-NLP PyTorch-NLP是一个专为自然语言处理任务设计的…...

Bili2Text:3分钟将B站视频转为文字稿的免费终极方案

Bili2Text:3分钟将B站视频转为文字稿的免费终极方案 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 你是否曾为整理B站视频内容而反复观看同一片段…...

UNIT3D多语言支持:50+语言包与本地化配置完整指南

UNIT3D多语言支持:50语言包与本地化配置完整指南 【免费下载链接】UNIT3D-Community-Edition UNIT3D is a private torrent tracker built using Laravel, Livewire and AlpineJS. 项目地址: https://gitcode.com/gh_mirrors/un/UNIT3D-Community-Edition UN…...

Dynamoose事务处理:保证数据一致性的完整解决方案

Dynamoose事务处理:保证数据一致性的完整解决方案 【免费下载链接】dynamoose Dynamoose is a modeling tool for Amazons DynamoDB 项目地址: https://gitcode.com/gh_mirrors/dy/dynamoose Dynamoose作为Amazon DynamoDB的建模工具,提供了强大的…...

别再傻傻分不清!从‘水桶倒水’到‘独立车间’,一文搞懂CCD和CMOS传感器到底差在哪

从‘水桶倒水’到‘独立车间’:CCD与CMOS传感器的本质差异与选购指南 你是否曾在挑选相机或手机时,面对"CCD复古风"和"CMOS高性能"的宣传语感到困惑?这两种看似神秘的传感器技术,其实可以用两个生动的比喻来理…...

Python Playwright 安装

官方文档 https://playwright.net.cn/python/docs/actionability 1,Pip 安装 # 安装 Playwright 库 pip install playwright# 自动安装浏览器二进制文件(Chromium/Firefox/WebKit) playwright install playwright install 默认安装全部 3 …...

告别卡顿!用uni.request的enableChunked实现小程序流式聊天(附完整代码)

告别卡顿!用uni.request的enableChunked实现小程序流式聊天(附完整代码) 在移动应用开发中,流畅的用户体验往往决定了产品的成败。想象一下,当用户在小程序中与AI对话时,如果每次都要等待全部内容加载完成才…...

ChanlunX缠论工具:3步实现股票技术分析的自动化革命

ChanlunX缠论工具:3步实现股票技术分析的自动化革命 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 你是否还在为复杂的K线图分析而头疼?是否因为手工绘制缠论结构而浪费大量时间&…...

Android 开发问题:Unresolved reference: kapt

dependencies {kapt(libs.hilt.compiler) }在 Android 开发中,上述模块级 build.gradle 文件中的配置,出现如下错误信息 Unresolved reference: kapt问题原因 kapt() 是 kapt 插件提供的 DSL 方法,需要先应用 kapt 插件才能使用 处理策略 在 …...

2026年主流热门AI会议纪要工具大横评,算完效率成本账,差距竟然这么大

作为常年泡在各种会议、调研里的内容创作者,这段时间我横评了5款2026年主流的AI会议纪要工具,算完时间和成本账直接傻了——听脑AI是目前同类工具中最值得用的,没有之一。 直达链接:https://itingnao.com/home/?source3707 谁懂…...

Cobalt Strike监听器与Payload生成实战:从HTTP到EXE的几种上线方式详解

Cobalt Strike监听器与Payload生成实战:从HTTP到EXE的几种上线方式详解 在渗透测试和红队演练中,Cobalt Strike作为一款成熟的商业框架,其监听器配置与Payload生成能力直接影响攻击链的初期成功率。本文将深入探讨从HTTP到EXE的多种上线技术实…...

海外短剧系统源码带后台 - 多支付对接 + 双端 APP 一键打包上架

海外短剧赛道爆发,全球市场规模持续走高,但语言不通、支付割裂、双端上架难、合规风险高、无法二开,成为多数创业者出海的五大拦路虎。云微海外短剧系统,提供完整前后端源码 独立管理后台 多支付无缝对接 双端 APP 一键打包 包…...

WPF悬浮窗技术方案:云顶之弈实时数据辅助系统的架构设计与实现

WPF悬浮窗技术方案:云顶之弈实时数据辅助系统的架构设计与实现 【免费下载链接】TFT-Overlay Overlay for Teamfight Tactics 项目地址: https://gitcode.com/gh_mirrors/tf/TFT-Overlay 在策略自走棋游戏《英雄联盟:云顶之弈》中,玩家…...

互联网大厂 Java 求职面试:从 Java SE 到 Spring Cloud 的技术问答

互联网大厂 Java 求职面试:从基础到高级的技术问答在互联网大厂求职,面试是一个至关重要的环节。本次面试场景中,面试官将针对 Java 开发者提问,候选人燕双非会用幽默的方式应对各种问题。我们将从基础知识开始,逐步深…...