网站首页 > 技术文章 正文
如果机器上已经安装了python开发环境,比如在开发者自己的电脑上运行python程序,则只需要修改.py源代码文件的默认打开方式为pythonlauncher即可,双击python源代码文件即可运行python程序,这种情况在开发者自己使用时极为方便。Pythonlauncher会根据文件头和文件后缀自动选择合适的解释器执行python程序,比如双击.py后缀的文件时会打开控制台程序,双击.pyw后缀的文件时则不会显示控制台而打开的是一个窗口程序。
但如果我们需要在没有安装python开发环境的电脑上执行python程序该怎么办呢?比如我需要将开发好的python程序发送给我的朋友去测试,但他的电脑上并没有python开发环境,这时候就需要将python源文件打包成windows可执行的.exe应用程序,打包的过程会将python程序执行所需的源代码、模块和解译器整体打包成一个.exe可执行文件,双击该执行文件即可在没有python开发环境的电脑上运行python程序。
打包python源文件成.exe可执行文件需要使用一个第三方模块pyinstaller,安装这个模块只要在命令提示符中输入命令pipinstall pyinstaller即可。
安装成功后将当前目录更改到.py源文件所在目录,可以在文件资源管理器中复制路径,在命令提示符中使用CD命令更改当前目录。
执行打包命令“pyinstaller源文件.py”,或“pyinstaller-F源文件.py”,不加-F参数会将源文件及其相关文件打包在同一个目录下,加入-F参数后源文件及其相关文件会打包成一个单独的.exe文件中。使用-w参数可以隐藏控制台的显示,比如你的程序是一个窗口应用程序。使用-i可以更改.exe程序的图标,方法是“-i 图标文件路径”。下面以打包一个不带控制台显示的窗口程序为例,输入命令pyinstaller-F test.pyw。
打包完成后.exe可执行文件在dist文件夹下,其它三个生成的文件夹__pycache__存放源代码的.pyc编译文件,build中存放打包过程中生成的中间产物,.spec后缀的文件则是打包参数说明,如果重新打包需要将这些生成的目录和文件全部删除。
双击.exe可执行文件就可以运行python程序了,现在可以愉快的发给你的朋友进行测试了。
猜你喜欢
- 2024-10-10 超详细的Python之模块知识点,这些知识点你都学会了吗?
- 2024-10-10 Python实用案例编程入门:第八章 如何自动连接WIFI
- 2024-10-10 Python 幕后:Python导入import的工作原理
- 2024-10-10 Python3基础之构建setup.py(python构建模型)
- 2024-10-10 docker进击之Dockerfile最佳实践(docker基础实战教程三:dockerfile)
- 2024-10-10 Python超详细的字符串用法大全(python字符串操作大全)
- 2024-10-10 Python 3.8 新特性全面解读(python3.10新特性)
- 2024-10-10 使用 Scrapy 轻松抓取网页(用python抓取网页数据的代码)
- 2024-10-10 如何把Python应用构建为Docker容器
- 2024-10-10 使用哪些工具,可以提升 Python 项目质量?
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 527℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 492℃MySQL service启动脚本浅析(r12笔记第59天)
- 472℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 469℃启用MySQL查询缓存(mysql8.0查询缓存)
- 450℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 429℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 426℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)