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可执行文件相关推荐

  1. python程序打包成exe可执行文件,亲测可行(pyinstaller教程)

    python程序打包成exe可执行文件,亲测可行(pyinstaller教程)(11-20190214) 文章目录: 有些程序你不想让别人看到,由此程序你想做成绿色软件普惠大众,有些..., 然而你只 ...

  2. 【Python学习笔记(二)】使用Pyinstaller将不同路径下的py文件打包成exe可执行文件

    ** 使用Pyinstaller将不同路径下的py文件打包成exe可执行文件 ** ** 前言 在Windows环境下需要打包一个python项目成exe可执行文件,共有一个主函数BomSoftwar ...

  3. Python写的代码打包成.exe可执行文件

    Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...

  4. python如何将图片打包进exe里_用python将图片切分为九宫格 并打包成exe可执行文件(附源码)...

    前言 经常在朋友圈或者微博看到九宫格显示的图片,虽然是九张图片,但是这是一张图片经过切割而成的,显示效果很震撼.今天,我们就用python将图片切分为九宫格,并打包成exe可执行文件,就算不需要代码也 ...

  5. python版本可执行可嵌入_Python程序打包成exe可执行文件的方法探究

    王瑞文+王圣辉+边润根+邓明月 摘 要:Python是一种很流行的开源编程语言,可以在各种领域中用来编写独立的程序和脚本.Python免费.可移植.功能强大,而且使用起来相当容易.来自软件产业各个角落 ...

  6. python 打包 小文件_[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件

    1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...

  7. 用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件

    写在前面:本文为笔者最早于 2019-05-11 23:15 以"@拼命三郎"的身份发表于博客园 本文为原创文章,转载请标明出处 一.you-get介绍 you-get是一个基于 ...

  8. 如何将Python写的代码打包成.exe可执行文件

    有时候我们需要将自己写的代码打包成exe文件,给别人使用需要怎么办呢?以下将讲解Python代码如何打包成.exe文件. 1. 下载pyinstaller 因为Python中有很多三方包,我们想要这些 ...

  9. python打包成exe_【Python】使用pyinstaller打包成exe文件时可以显示图片的方法

    本文作者:小赖同学 最近我在学习Python GUI的使用时,尝试在一个组件上使用了背景图片,然而,直接Run时这个背景图片是可以显示出来,可当使用pyinstaller打包成exe时却没有打包进去显 ...

  10. 使用Pyqt5制作GUI界面,并使用pyinstaller打包成exe文件

    1:安装需要的第三方库(pyqt5,pyqt5-tools) 如果读者使用的anaconda,在安装完上述两个包之后会出现spyder打开不了的情况,本博客是基于纯python3(重装 的,自己的sp ...

最新文章

  1. 你在过度测试你的软件吗?
  2. js实现模态框点击空白关闭
  3. android相关使用工具
  4. 人工智能、应用、程序
  5. 烽火传递(dp+单调队列)
  6. 博客园里如何防垃圾评论
  7. 通过哪吒动漫豆瓣影评,带你分析python爬虫与BeautifulSoup快速入门
  8. Pentium奔腾架构/流水线及其优化
  9. Galaxy Digital CEO:比特币应能守住4万美元关口
  10. Android开发笔记(六十一)文件下载管理DownloadManager
  11. Pytorch——Dropout
  12. 【计算几何】【极角序】【二分】bzoj1914 [Usaco2010 OPen]Triangle Counting 数三角形
  13. 搜索引擎推荐(可以代替谷歌的搜索引擎)
  14. linux 防DDOS防火墙脚本
  15. OpenGL ES EGL eglCreateContext
  16. log4j2漏洞各大厂应对措施
  17. Python实现常见的排序算法
  18. 钉钉、微信抢占移动OA入口,其他OA厂商何去何从?
  19. VS错误 CS0120 对象引用对于非静态的字段、方法或属性
  20. 书籍是人类进步的阶梯

热门文章

  1. 使用AXI Verifcation IP进行系统验证
  2. 【HDU-5246】超级赛亚ACMer(贪心)
  3. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)...
  4. JQuery正则验证
  5. Codeforces Gym 100187E E. Two Labyrinths bfs
  6. Spring MVC 学习笔记 spring mvc Schema-based configuration
  7. git svn clone
  8. 对象调用corePlot使用技巧及iOS内存优化之道
  9. Android进阶篇-Http协议
  10. 摘自网络上总结出的一些开源的技术