前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想把你写的Python程序发给别人用?打包成exe啊!

想把你写的Python程序发给别人用?打包成exe啊!

作者头像
Crossin先生
发布2020-10-10 15:13:08
7.9K0
发布2020-10-10 15:13:08
举报

前言

大家好,欢迎来到编程教室!

当你学了一段时间Python,终于写出一个小游戏的时候,是不是很想发给你的小伙伴分享一下你的成果?但是,如果直接将xx.py文件发给别人,别人通常是不能直接运行的,他还需要安装python解释器,甚至还要安装我们用到的第三方包,是不是有点小麻烦?

不过PC可以运行exe文件,这就为我们提供了一个变通的途径:将Python程序打包成exe文件。这样,对方就不需要自己配置Python环境,直接运行exe文件即可。

Python本身并没有提供这个功能,所以需要借助一些外部库来实现。之前我们曾经介绍过一个方式:

将打飞机游戏打包成 exe

文章中使用了cx_freeze这个模块。今天我们再介绍另一个工具:pyinstaller,也可以达到同样的效果。因为打包exe过程中常会出现问题,所以两种方案也可以互为补充。

PS:打包exe时,版本尽量选择32位版本的Python,因为win64位系统向下兼容32位程序。另外切记使用的模块版本一定要和Python版本严格一致,不然很可能打包失败。

安装pyinstaller

首先安装pyinstaller,使用安装命令:pip3 install pyinstaller,如下图所示。

pyinstaller打包机制

我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。

即使我们的项目只使用的一个requests包,但是可能我们还安装了其他n个包,但是他不管,因为包和包只有依赖关系的。比如我们只装了一个requests包,但是requests包会顺带装了一些其他依赖的小包,所以为了安全,只能将所有第三方包+python解释器一起打包。如下图所示。

蓝色表示是安装requests依赖的包,看到了吧!

Pyinstaller打包exe

这里呢,我就拿刚给同事写办公自动化脚本示例一下。源码示例效果,如下图所示。

1、我们来将这个.py的文件打包成一个exe,我们直接cmd切换到这个脚本的目录,执行命令:pyinstaller-F setup.py,如下图所示。

ps: -F参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,这个记住就行,固定命令。

执行完毕之后,会生成几个文件夹,如下图所示:

在dist里面呢,就有了一个exe程序,这个就是可执行的exe程序,如下图所示:

2、我们把这个setup.exe拖到和setup.py平级的目录,我们来运行一下这个,效果图如下图所示。

这样,我们就完成了一个打包工作,如果别人需要,即使没有python环境,他依然可以运行。

3、接下来我们再来打包一个带界面的,这里我用pyqt5写了一个最简单的框架,看一下打包成exe是否能运行成功,效果图如下图所示:

我们可以看到,后面有一个黑洞洞的窗口,这就有点尴尬了,所以,我们的打包命令也要变一下。

4、执行 pyinstaller -F -wsetup.py 多加-w以后,就不会显示黑洞洞的控制台了,这里就不做演示啦!

5、但是我们打包的exe,我们的图标呀,实在是有点丑陋,默认的,没有一点自己的风格,那么,我们应该怎么改一下呢?

准备一个ico格式的图标文件,执行命令:pyinstaller -F -w-i wind.ico setup.py,如下图所示。

默认打包图片,如下图所示:

加上 -i 参数之后,就会变成我们指定的logo图标:

ps:程序路径最好全部都是英文,否则可能会出现莫名其妙的问题

到此,我们就完成了将Python程序打包成exe文件了。

总结命令

Pyinstaller -F setup.py 打包exe

Pyinstaller -F -w setup.py 不带控制台的打包

Pyinstaller -F -i xx.ico setup.py 打包指定exe图标打包

平常我们只需要这三个就好了,几乎可以满足你的绝大部分需求了。

结语

到这之后呢,python打包成exe基本算是结束了。提醒一句,记得把pip升级成最新版的pip再安装pyinstaller哈。

根据我的经验,刚刚尝试Python打包exe的同学往往都会碰上各种奇葩的坑。所以如果你一开始没有成功也不要气馁,这是很正常的。不断地踩坑再爬起来本身就是编程学习的一部分。

想打包的朋友,赶紧动起手来吧,祝你们好运!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装pyinstaller
  • pyinstaller打包机制
  • Pyinstaller打包exe
  • 总结命令
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档