前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 代码如何打包成.exe文件(Pyinstaller)

python 代码如何打包成.exe文件(Pyinstaller)

作者头像
上海-悠悠
发布2021-06-24 22:23:38
1.5K0
发布2021-06-24 22:23:38
举报

前言

python写的代码如何打包成.exe可执行程序,让别人电脑上没安装过 python 的小伙伴也可以直接运行? 本篇讲如何用PyInstaller库一步步打包python代码。

PyInstaller 环境准备

我的电脑环境: 1.系统windows 10 2.python 3.6.6

PyInstaller 环境需依赖pywin32包,先安装pywin32, 推荐pip安装

代码语言:javascript
复制
pip install pywin32 --index-url https://pypi.douban.com/simple

如果没安装pywin32,后面打包会报错:FileNotFoundError: [Errno 2] No such file or directory: ‘lib\site-packages\win32\win32wnet.pyd’

使用pip安装PyInstaller

代码语言:javascript
复制
pip install PyInstaller --index-url https://pypi.douban.com/simple

安装完查看版本号

代码语言:javascript
复制
C:\Users\dell>pip show pywin32
Name: pywin32
Version: 228

C:\Users\dell>pip show PyInstaller
Name: pyinstaller
Version: 4.3
Requires: setuptools, importlib-metadata, altgraph, pywin32-ctypes, pyinstaller-hooks-contrib, pefile

pywin32离线包下载地址,需匹配对应的python和系统版本https://www.lfd.uci.edu/~gohlke/pythonlibs/#pip

打包.exe文件

我写了一段简单的 requests 代码yoyoblog.py

代码语言:javascript
复制
"""
使用requests库获取我的博客首页文章地址
上海-悠悠 blog:https://www.cnblogs.com/yoyoketang/
"""
import requests
import re

r = requests.get("https://www.cnblogs.com/yoyoketang/")
# 匹配首页blog地址
res = re.findall(r'class="postTitle2 vertical-middle" href="(.+?)"', r.text)
for i in res:
    print("blog:", i)

命令行运行结果

代码语言:javascript
复制
D:\demo\myblog>python yoyoblog.py
blog: https://www.cnblogs.com/yoyoketang/p/14811325.html
blog: https://www.cnblogs.com/yoyoketang/p/14500093.html
blog: https://www.cnblogs.com/yoyoketang/p/14084401.html
blog: https://www.cnblogs.com/yoyoketang/p/10302295.html
blog: https://www.cnblogs.com/yoyoketang/p/14891200.html
blog: https://www.cnblogs.com/yoyoketang/p/14891142.html
blog: https://www.cnblogs.com/yoyoketang/p/14890723.html
blog: https://www.cnblogs.com/yoyoketang/p/14890583.html
blog: https://www.cnblogs.com/yoyoketang/p/14888404.html
blog: https://www.cnblogs.com/yoyoketang/p/14887668.html
blog: https://www.cnblogs.com/yoyoketang/p/14887087.html
blog: https://www.cnblogs.com/yoyoketang/p/14884606.html
blog: https://www.cnblogs.com/yoyoketang/p/14873194.html
blog: https://www.cnblogs.com/yoyoketang/p/14869348.html

这段代码依赖第三方库requests,需在python目录Lib\site-packages下找到requests

找到后整个文件夹全部复制到代码根目录

cd到项目跟目录myblog下执行命令

代码语言:javascript
复制
pyinstaller -F yoyoblog.py

执行过程如下

代码语言:javascript
复制
D:\demo\myblog>pyinstaller -F yoyoblog.py
275 INFO: PyInstaller: 4.3
275 INFO: Python: 3.6.6
275 INFO: Platform: Windows-10-10.0.17134-SP0
276 INFO: wrote D:\demo\myblog\yoyoblog.spec
...
14480 INFO: Writing RT_ICON 7 resource with 1128 bytes
14486 INFO: Updating manifest in D:\demo\myblog\build\yoyoblog\run.exe.l_fhvf3j
14486 INFO: Updating resource type 24 name 1 language 0
14490 INFO: Appending archive to EXE D:\demo\myblog\dist\yoyoblog.exe
16213 INFO: Building EXE from EXE-00.toc completed successfully.

看到successfully 就是成功了

pyinstaller 一些常用参数命令

  • -F 表示生成单个可执行文件
  • -w 表示去掉控制台窗口,这在GUI界面时非常有用。 不过如果是命令行程序的话那就把这个选项删除吧!
  • -p 表示你自己自定义需要加载的类路径,一般情况下用不到
  • -i 表示可执行文件的图标

更多参数可以通过pyinstaller -h查看

执行.exe文件

打包完成后会在 dist 目录看到一个 yoyoblog.exe 文件

可以打开到对应目录

双击运行yoyoblog.exe

双击运行发现代码运行很快,一闪就没有了,这是因为代码运行完就自动结束了,导致啥都没看到。 解决办法1:可以在cmd窗口执行.exe文件

代码语言:javascript
复制
D:\demo\myblog\dist>yoyoblog.exe
blog: https://www.cnblogs.com/yoyoketang/p/14811325.html
blog: https://www.cnblogs.com/yoyoketang/p/14500093.html
blog: https://www.cnblogs.com/yoyoketang/p/14084401.html
blog: https://www.cnblogs.com/yoyoketang/p/10302295.html
blog: https://www.cnblogs.com/yoyoketang/p/14891200.html
blog: https://www.cnblogs.com/yoyoketang/p/14891142.html
blog: https://www.cnblogs.com/yoyoketang/p/14890723.html
blog: https://www.cnblogs.com/yoyoketang/p/14890583.html
blog: https://www.cnblogs.com/yoyoketang/p/14888404.html
blog: https://www.cnblogs.com/yoyoketang/p/14887668.html
blog: https://www.cnblogs.com/yoyoketang/p/14887087.html
blog: https://www.cnblogs.com/yoyoketang/p/14884606.html
blog: https://www.cnblogs.com/yoyoketang/p/14873194.html
blog: https://www.cnblogs.com/yoyoketang/p/14869348.html

解决办法2:加一句代码按任意键退出

代码语言:javascript
复制
"""
使用requests库获取我的博客首页文章地址
上海-悠悠 blog:https://www.cnblogs.com/yoyoketang/
"""
import requests
import re

r = requests.get("https://www.cnblogs.com/yoyoketang/")
# 匹配首页blog地址
res = re.findall(r'class="postTitle2 vertical-middle" href="(.+?)"', r.text)
for i in res:
    print("blog:", i)

input("press any key to exit!")

重新执行pyinstaller -F yoyoblog.py 打包,这样就可以双击运行了

icon 制作

-i参数打包的时候可以自定义icon图标

代码语言:javascript
复制
-i <FILE.ico or FILE.exe,ID or FILE.icns or "NONE">, --icon <FILE.ico or FILE.exe,ID or FILE.icns or "NONE">
                        FILE.ico: apply that icon to a Windows executable.
                        FILE.exe,ID, extract the icon with ID from an exe.
                        FILE.icns: apply the icon to the .app bundle on Mac OS
                        X. Use "NONE" to not apply any icon, thereby making
                        the OS to show some default (default: apply
                        PyInstaller's icon)

先找一张icon图片放到项目跟目录(注意并不是每个图片格式都可以,必须是icon格式)

-i 参数打包

代码语言:javascript
复制
pyinstaller -F yoyoblog.py -i favicon.ico

打包完成重新双击运行,会看到左上角有自己的icon了

icon在线制作https://www.bitbug.net/

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

本文分享自 从零开始学自动化测试 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • PyInstaller 环境准备
  • 打包.exe文件
  • 执行.exe文件
  • icon 制作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档