把 Python 脚本打包成可以直接双击运行的 .exe 文件 【转】
因为最近要用到 Python 脚本,所以自己学习了一下,顺便学习如何把它打包成 .exe 可执行文件,达到双击运行的效果,网上找了资料,保存下来学习用,原文出处:https://baijiahao.baidu.com/s?id=1606400855559470971&wfr=spider&for=pc
大家都知道,Python是一种脚本语言,也就是解释型的语言,需要解释器来进行解释以后才可以执行,而Python源代码需要在Python虚拟机上面运行,但是我们做好的程序,不可能给用户使用的时候还让他安装一个Python环境,所以今天我们讲解如何将Python程序打包为exe可执行文件。提示: 以下的教程都是再有Python环境的基础上的,如果没有安装,请先参考:Python安装以及环境变量配置
一、安装pyinsatller
打开命令行窗口,输入如下指令:
pip3 install pyinstaller
然后静待pyinstaller自动安装好
此外还要安装好 win32api ,可以用命令 pip install pypiwin32 或 pip3 install pypiwin32 或 python -m pip install pypiwin32 直接下载安装,如果没有安装好这个,生成的exe文件的时候,会报错,是无法生成 .exe 文件的,此外还要注意win32api的版本要跟你的Python编译器的版本一致,不然安装 win32api 时会找不到 python 注册表
二、使用pyinstaller打包Python程序
①在你的Python程序文件夹上(不点进去)按住shift并且右键,在弹出的选项中点击"在此处打开命令行窗口"或者“在此处打开PowerShell窗口” 或者先进入命令行窗口,然后使用cd指令进入程序文件夹
②输入以下指令,开始打包
pyinstaller -F (-i icofile) -w filename
filename表示你的Python程序文件名
-w 表示隐藏程序运行时的命令行窗口(不加-w会有黑色窗口)
括号内的为可选参数,-i icofile表示给程序加上图标,图标必须为.ico格式
icofile表示图标的位置,建议直接放在程序文件夹里面,这样子打包的时候直接写文件名就好
个人实操说明:这里我实际操作的时候添加图标就无法生成,不加图标按下面的命令生成就可以,具体原因待以后补充
如果我要添加图标就报下图的错误,这里我已经安装好了WIN32api了的,具体造成错误原因没还没找到
补充:
上面说的无法生成 ico 图标问题,已经解决,测试是因为我的文件名后缀没有输入,要先生成 ico 图标,再生成 exe 运行程序的,测试指令如下
输入完成,按回车,就会开始自动打包了,第一次打包过程可能比较缓慢
输入示例:
pyinstaller -F-i tello.ico -w love.py
然后我们进入到程序目录里面会再看到一个名称为dist目录,打包好的exe程序就在里面
注意:如果原本的程序中使用到了相应的资源,需要复制到该目录下,否则程序会无法运行
比如我这里在程序中使用到了love.png这个图,所以就需要将该文件放到dist目录下
最后补充一个 pyinstaller 的各个参数表
参数 | 含义 |
---|---|
-F |
指定打包后只生成一个exe格式的文件 |
-D |
–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) |
-c |
–console, –nowindowed 使用控制台,无界面(默认) |
-w |
–windowed, –noconsole 使用窗口,无控制台 |
-p |
添加搜索路径,让其找到对应的库。 |
-i |
改变生成程序的icon图标 |
关于有图片音频文件时打包成 exe 的补充:
对于程序里引用了图片跟音频的python,打包之后会出现闪退情况,或者打开exe文件失败的情况,这时候只要把程序里的图片引用路径改为绝对路径,并在前面加 r 即可,如下所示:
background_1 = pygame.image.load(r'E:\Work_file\Python_test\no.jpg').convert()
把 Python 脚本打包成可以直接双击运行的 .exe 文件 【转】的更多相关文章
- Python脚本打包成exe执行文件
需求 一个教辅目录结构检查工具,目录结构是[书籍]-[章节]-[题目|答案]-[*.jpg],后台有个异步处理的服务,需要强依赖这个目录结构. 书籍解析是单独的pipeline,日志对用户不可见,这里 ...
- 将Python脚本打包成可执行文件
Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ...
- PyInstaller把Python脚本打包成可执行程序教程
一.说明 一直以来都有把.py文件打包成.exe文件的想法,但总是不够强烈,每次拖着拖着就淡忘了. 昨天帮硬件部门的同事写了个脚本,然后今天下午的时候,他问有没有办法把脚本打包成可执行文件,这样方便以 ...
- 【转载】将python脚本打包成exe文件
exe文件也就是可以直接执行的文件.通常我们编好的带py后缀的脚本文件都是需要在有python的环境下执 行,每次通过Win + R打开运行窗口再输入powershell打开控制台,再千辛万苦地cd ...
- python脚本打包成rpm软件包
前言 软件最终都会有交付的形式,有的是用tar包,有个是以目录,有的是封成一个文件包,从大多数使用场景来说,直接打包成软件包的方式是最简单,也是最不容易出错的,路径可以在包里面写死了 实践 关于打包的 ...
- 把python脚本打包成win可执行文件
前几天有个朋友找我写一点小东西,写好后把代码发他帮他搞了半天,结果愣是没听懂,就找到了这个办法. 1.导入pyinstaller包, pip install pyinstaller 2.进入到你需要打 ...
- 使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件
我们在开发程序的时候会引用很多DLL文件,在程序完成编写后,如果不把这些引用的DLL打包,不能在其他电脑运行,那么很多同学可能在想了,能不能把我们编写好的程序打包成一个EXE文件,最好双击就能运行,当 ...
- 将Python脚本打包成可执行文件——转载
Python是一个脚本语言,被解释器解释执行.它的发布方式: py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装 ...
- python脚本打包成exe可执行文件
1. 工具pyinstaller (pip install pyinstaller) 2.生成exe (pyinstaller -F -w Capturing_PDFs.py) 参数 -F 生成单个文 ...
随机推荐
- robin 今天来南大了
今天非常高兴,在学校的体育馆见到了李彦宏博士. 这是第一次真实的见到了曾经仅仅能在媒体上才干够见到的人,真实,感觉非常好. 我算不上李彦宏的粉丝,也不是非常热衷于百度这个公司,可是我如今仍然心情澎湃. ...
- luogu1631 序列合并
题目大意 有两个序列A,B,在A和B中各取一个数相加能得到$n^2$个和.求出这些和前n小的数字. 题解 首先这道题不可以用自己想的什么A序列B序列各两个指针的自己发明的模拟算法,用这样的算法只能是绝 ...
- oc27--synthesize,省略getset实现
// // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject { @public int _a ...
- TCP打开文件传输(客户端code)
#include <stdio.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/types. ...
- C语言程序创建文件
#include <stdio.h>#include <stdlib.h>int main() { FILE *fp;if((fp=fopen("g:\\a.txt& ...
- @RequestBody接收的是一个json对象
一直以为在SpringMVC环境中,@RequestBody接收的是一个json对象,调试代码时没有成功,后来才发现,其实 @RequestBody接收的是一个json字符串,而不是一个json对象. ...
- [Apple开发者帐户帮助]一、开始(3)账户信息
您帐户中显示的部分取决于您是否拥有免费帐户或是否已注册付费程序(Apple Developer Program或Apple Developer Enterprise Program).此外,您可以在这 ...
- python3+request接口自动化框架中自动发送邮件
在上一篇中的自动化框架中没有放上自动发送测试结果到邮箱的功能,在这篇文章中在补一下,哈哈 1.上一篇的代码就不在一一介绍了,本篇只介绍发送邮件的功能代码 2.在public common 文件夹中创建 ...
- JavaScript 进阶 常用内置对象
一.常用内置对象 所谓内置对象就是ECMAscript提供出来的一些对象,我们知道对象都是有相应的属性和方法 数组Arry 1.数组的创建方式 字面量方式创建(推荐使用,简单粗暴) var color ...
- Spring Boot (18) @Async异步
通常我们在某网站发送邮件验证码时,首先会提示验证码已发送,然而此时可能没有收到验证码,过几秒种才真正的收到.如果是同步会先验证发送是否成功然后再通知,如果是异步可以先通知用户已发送,并释放请求,然后再 ...