Python进阶(四十七)python3使用pyinstaller实现将py文件打包成exe文件

本文主要是介绍Python进阶(四十七)python3使用pyinstaller实现将py文件打包成exe文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、前言
    • 二、py文件打包
      • 2.1 Step1:下载pyinstaller
      • 2.2 Step2: 将待打包的py文件放到Python安装路径的Scripts下。
      • 2.3 Step3:打包exe程序
    • 三、Greenfish Icon Editor Pro生成icon图片
    • 四、拓展阅读

一、前言

py文件通常需要运行在Python编程坏境中,而可执行exe文件更方便。

由于之前pyinstaller不支持python3。现在pyinstaller支持python3,此篇博文即是在python3环境下实现将py文件打包成exe文件。

首先介绍一下可以打包Python代码的工具:

  • py2exe: 这个是知名度最高的,但是好像不太适合新手,需要各种库,用起来比较繁琐,不推荐。

  • pyinstaller : 可以只是生成单独的可执行程序。 最新版本为3.2.1 Stable, supports Python 2.7, 3.3–3.5。 可以自定义图标。 跨平台,兼容性良好。

  • cx_Freeze : 这个打包质量挺好,操作也简单。缺点是不能生产单独的可执行文件,结果就是exe文件被淹没在众多文件中,看着不高大上。

二、py文件打包

下面介绍使用pyinstallerpy文件打包成exe文件的具体步骤:

2.1 Step1:下载pyinstaller

pip install pyinstaller

安装成功后,会在Python/Scripts文件夹下显示名为“pyinstaller.exe”命令文件。

2.2 Step2: 将待打包的py文件放到Python安装路径的Scripts下。

注意Scripts放置Python的各种第三方扩展包,这里的pyinstaller.exe在此处。

2.3 Step3:打包exe程序

步骤:

  1. 在cmd环境进入该Scripts文件夹路径下;

  2. 输入指令打包:pyinstaller - F **.py

在实际操作过程中,遇到了“import _win32sysloader ImportError:Dll load failed:找不到指定的模块”的问题,截图如下:

这里写图片描述

后来下载了Microsoft Visual C ++ 2010,之后成功解决问题。

干净的Windows 7 x86机器上安装Python 3.5,然后运行后pip install pyinstaller,得到了同样的错误。所以我分析_win32sysloader.pyd依赖关系Dependency Walker中,有一个依赖于MSVCR100.DLL文件,该文件是Microsoft Visual C ++ 2010再发行组件包的一部分。安装该软件包后,PyInstaller正常工作。

VC++ 2010安装好之后,在此执行打包命令,此时打包成功。打包时间大约为1-2分钟,取决于py文件的大小及依赖关系。

这里写图片描述

打好包之后,会在Scripts路径下生成两个文件夹:distbuild,如下图所示。

这里写图片描述

进入dist文件,发现生成的文件扩展名为.egg。这又是什么鬼?

这里写图片描述

经查阅,原来python的egg文件有点像java中的jar文件,是一个工程打包文件,便于安装部署。不知道怎么会生成.egg文件,尝试重新打包,再次打包发现在dist目录下生成了exe文件,具体原因还不知道怎么解释了…
这里写图片描述
进入dist文件,双击生成的exe可执行文件,会自动执行程序。

在为可执行文件生成图标时,执行以下语句:

pyinstaller --icon=C:\Users\SHQ\Desktop\VIP.ico -F waterSpider_main.py

但是在执行过程中,出现了“SRCPATH[..]”文件未找到及“struct.error: unpack requires a string argument of length 16”的错误。
这里写图片描述
这里写图片描述

首先先介绍一下ico文件,这对于理解其解决方案有很大帮助。

ico文件是windows下图片格式,我们看到的文件夹,执行文件等都有不同的图标显示,并且当我们切换视图模式(Thumbnails,Tiles,Icons, List, Details)时,文件的图标会以"不同"尺寸显示,确切的说,应该是不同的图标文件(尺寸亦不同)。ico文件里面可以有多个不同的图标文件以适应不同的视图模式,并且这些图标文件通常按尺寸大小的顺序存放。以windows XP/server 2003下支持的ico尺寸为16x16,32x32和48x48。vista/win7下则最多可以支持256x256。

问题关键在于ico文件中图标的顺序问题,XP和server 2003对顺序要求不高,无论是图标是按尺寸的正序还是倒序都可以正常显示,而然在vista/win7下确只能倒序。

如果你使用png2ico工具的工具的话,可以使用如下命令生成myicon.ico文件:

png2ico myicon.ico icon_128x128.png icon_64x64.png icon_48x48.png icon_32x32.png icon_16x16.png

要提醒的是png2ico生成的ico文件效果不是太好并且图标文件不能达到256x256,你不得不选择选择像248x248这样的尺寸来代替。推荐一个在线的转换工具ConvertIcon!,只是png2ico可以定义图标的顺序,而ConvertIcon!则是从小到大的顺序存储图标文件。但另一个ico编辑工具可以解决这个问题–Greenfish Icon Editor Pro(点击下载),该工具不仅可以编辑图标文件,而且可以修改图标文件的顺序。

三、Greenfish Icon Editor Pro生成icon图片

详细步骤如下:

首先:打开Greenfish Icon Editor Pro 软件并导入icon图片。

点击红色矩形框的icon选项->create icon from image 可以设置ico图片属性以及生成不同尺寸的icon图片,如下图:

这里写图片描述

有了这张图片可以看出,这些图标文件尺寸大小的顺序[见左侧框]为:1616,3232,4848,6464,256256, 接下来我们要做的就是通过鼠标拖动图片改变这些图片的排列顺序:256256,6464,3232,16*16 ,调整完毕后如下图所示:

这里写图片描述

接下来保存按钮保存icon图片。然后导入该图片,就可以看到能够在vista/win7 上正常显示了,效果如下图:

这里写图片描述

以上就是对python(py2exe)打包成exe执行文件,vista/win7下icon图标显示问题的解决方案内容的介绍,望你会有所收获。

四、拓展阅读

更多参数如下图所示:
这里写图片描述

  • Pyinstaller官网
  • 在线对图片进行透明圆角处理
  • 《Flask Web开发:基于Python的Web应用开发实战》
  • 《Learning Python, 5th Edition》

这篇关于Python进阶(四十七)python3使用pyinstaller实现将py文件打包成exe文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715543

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do