PyInstaller打包成exe可执行文件
PyInstaller
安装pyinstaller
对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:
pip install pyinstaller
通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):
python setup.py install
安装完后,检查安装成功与否:
pyinstaller --version
安装成功后,就可以使用下面的命令了:
- pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。
- pyi-archive_viewer : 查看可执行包里面的文件列表。
- pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)
- pyi-... : 等等。
使用PyInstaller
pyinstaller的语法:pyinstaller [options] script [script...] | specfile
最简单的用法,在和myscript.py同目录下执行命令:
pyinstaller mycript.py
然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:
pyinstaller -F mycript.py
你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug。
在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:
pyi-makespec optionsscript [script ...]
创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:
pyinstaller specfile
pyi-build specfile
PyInstaller原理简介
PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的ldd和objdump命令。
PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。
可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。
需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。
实践问题
pyinstaller打包后的exe运行怎么去掉弹出的命令行提示窗口?
1.如果使用.spec文件的话, 在该文件中找到console=True修改为console=False
2.如果是直接指定python文件进行pyinstaller打包的话,需要添加—noconsole
pyinstaller path\\mycode.py--noconsole
如果想只打包成一个exe:
pyinstaller -F path\\mycode.py --noconsole
或:
pyinstaller -F -wpath\\mycode.py
更换最终exe生成路径
在cmd中,一开始就要 cd D:\PythonEXE\ 切换到输出文件夹,然后在用上面的代码,说明:各个参数的作用,
例子:pyinstaller -F -w -pD:\tmp\core-python\libs -i d:\tmp\main.ico main.py
-F 表示生成单个可执行文件;
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!;
-c –console, –nowindowed 使用控制台,无界面(默认);
-p 表示你自己自定义需要加载的类路径,一般情况下用不到;
-i 表示可执行文件的图标。
转载于:https://www.cnblogs.com/guoyunlong666/p/9439975.html
PyInstaller打包成exe可执行文件相关推荐
- python程序打包成exe可执行文件,亲测可行(pyinstaller教程)
python程序打包成exe可执行文件,亲测可行(pyinstaller教程)(11-20190214) 文章目录: 有些程序你不想让别人看到,由此程序你想做成绿色软件普惠大众,有些..., 然而你只 ...
- 【Python学习笔记(二)】使用Pyinstaller将不同路径下的py文件打包成exe可执行文件
** 使用Pyinstaller将不同路径下的py文件打包成exe可执行文件 ** ** 前言 在Windows环境下需要打包一个python项目成exe可执行文件,共有一个主函数BomSoftwar ...
- Python写的代码打包成.exe可执行文件
Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...
- python如何将图片打包进exe里_用python将图片切分为九宫格 并打包成exe可执行文件(附源码)...
前言 经常在朋友圈或者微博看到九宫格显示的图片,虽然是九张图片,但是这是一张图片经过切割而成的,显示效果很震撼.今天,我们就用python将图片切分为九宫格,并打包成exe可执行文件,就算不需要代码也 ...
- python版本可执行可嵌入_Python程序打包成exe可执行文件的方法探究
王瑞文+王圣辉+边润根+邓明月 摘 要:Python是一种很流行的开源编程语言,可以在各种领域中用来编写独立的程序和脚本.Python免费.可移植.功能强大,而且使用起来相当容易.来自软件产业各个角落 ...
- python 打包 小文件_[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件
1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...
- 用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件
写在前面:本文为笔者最早于 2019-05-11 23:15 以"@拼命三郎"的身份发表于博客园 本文为原创文章,转载请标明出处 一.you-get介绍 you-get是一个基于 ...
- 如何将Python写的代码打包成.exe可执行文件
有时候我们需要将自己写的代码打包成exe文件,给别人使用需要怎么办呢?以下将讲解Python代码如何打包成.exe文件. 1. 下载pyinstaller 因为Python中有很多三方包,我们想要这些 ...
- python打包成exe_【Python】使用pyinstaller打包成exe文件时可以显示图片的方法
本文作者:小赖同学 最近我在学习Python GUI的使用时,尝试在一个组件上使用了背景图片,然而,直接Run时这个背景图片是可以显示出来,可当使用pyinstaller打包成exe时却没有打包进去显 ...
- 使用Pyqt5制作GUI界面,并使用pyinstaller打包成exe文件
1:安装需要的第三方库(pyqt5,pyqt5-tools) 如果读者使用的anaconda,在安装完上述两个包之后会出现spyder打开不了的情况,本博客是基于纯python3(重装 的,自己的sp ...
最新文章
- 你在过度测试你的软件吗?
- js实现模态框点击空白关闭
- android相关使用工具
- 人工智能、应用、程序
- 烽火传递(dp+单调队列)
- 博客园里如何防垃圾评论
- 通过哪吒动漫豆瓣影评,带你分析python爬虫与BeautifulSoup快速入门
- Pentium奔腾架构/流水线及其优化
- Galaxy Digital CEO:比特币应能守住4万美元关口
- Android开发笔记(六十一)文件下载管理DownloadManager
- Pytorch——Dropout
- 【计算几何】【极角序】【二分】bzoj1914 [Usaco2010 OPen]Triangle Counting 数三角形
- 搜索引擎推荐(可以代替谷歌的搜索引擎)
- linux 防DDOS防火墙脚本
- OpenGL ES EGL eglCreateContext
- log4j2漏洞各大厂应对措施
- Python实现常见的排序算法
- 钉钉、微信抢占移动OA入口,其他OA厂商何去何从?
- VS错误 CS0120 对象引用对于非静态的字段、方法或属性
- 书籍是人类进步的阶梯
热门文章
- 使用AXI Verifcation IP进行系统验证
- 【HDU-5246】超级赛亚ACMer(贪心)
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)...
- JQuery正则验证
- Codeforces Gym 100187E E. Two Labyrinths bfs
- Spring MVC 学习笔记 spring mvc Schema-based configuration
- git svn clone
- 对象调用corePlot使用技巧及iOS内存优化之道
- Android进阶篇-Http协议
- 摘自网络上总结出的一些开源的技术