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

本文详细介绍如何使用pyinstaller工具将Python3的.py文件打包成exe可执行文件,包括下载安装、文件放置、打包命令及常见问题解决,如DllLoadFailed错误和图标显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

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

前言

  py文件通常需要运行在Python编程坏境中,而可执行exe文件更方便。
  之前看过若干博文在python2环境下使用pyinstaller将py文件打包成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文件打包

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

Step1:下载pyinstaller

pip install pyinstaller
 
  • 1

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

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

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

Step3:打包exe程序

  步骤:

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

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

  在实际操作过程中,遇到了“import _win32sysloader ImportError:Dll load failed:找不到指定的模块”的问题,截图如下:
这里写图片描述
  找度娘查了很久,no answer,后来搜索到相关信息,在此表示感谢darksheng提供的解决方法。后来下载了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路径下生成两个文件夹:dist和build,如下图所示。
这里写图片描述
  进入dist文件,发现生成的文件扩展名为.egg。这又是什么鬼?
这里写图片描述
  经查阅,原来python的egg文件有点像java中的jar文件,是一个工程打包文件,便于安装部署。不知道怎么会生成.egg文件,尝试重新打包,再次打包发现在dist目录下生成了exe文件,具体原因还不知道怎么解释了…
这里写图片描述
  进入dist文件,双击生成的exe可执行文件,会自动执行程序。
  在为可执行文件生成图标时,执行以下语句:

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

  但是在执行过程中,出现了“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
 
  • 1

  要提醒的是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图片,如下图:
这里写图片描述
  有了这张图片可以看出,这些图标文件尺寸大小的顺序[见左侧框]为:16*16,32*32,48*48,64*64,256*256, 接下来我们要做的就是通过鼠标拖动图片改变这些图片的排列顺序:256*256,64*64,32*32,16*16 ,调整完毕后如下图所示:
这里写图片描述
  接下来保存按钮保存icon图片。然后导入该图片,就可以看到能够在vista/win7 上正常显示了,效果如下图:
这里写图片描述
  以上就是对python(py2exe)打包成exe执行文件,vista/win7下icon图标显示问题的解决方案内容的介绍,望你会有所收获。

  更多参数如下图所示:
这里写图片描述
  Pyinstaller官网
  在线对图片进行透明圆角处理

附 电子书福利(免积分下载)

Flask Web开发:基于Python的Web应用开发实战

Learning Python, 5th Edition

这里写图片描述

这里写图片描述

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow

### 使用 PyInstallerPython 脚本打包为可执行文件 #### 为什么要将 Python 文件打包 EXE? 将 Python 文件打包 EXE 文件的主要目的是为了使程序能够在不安装 Python 解释器的情况下运行,方便分发给其他用户。这可以提高软件的独立性和易用性[^1]。 #### 安装 PyInstaller 可以通过 `pip` 工具来安装 PyInstaller。以下是具体的安装命令: ```bash pip install pyinstaller ``` 如果之前误输入了错误的命令(如 `pip insatll Pyinstaller`),只需重新运行上述正确命令即可完安装[^2]。 #### 打包的具体操作步骤 1. **准备环境** 确保已安装好 PyInstaller 并将其放置于目标 Python 环境中。同时注意,用于打包的 `.py` 文件及其所在文件夹应遵循良好的命名习惯,避免使用空格或其他特殊字符(如 `/`, `-`, `,`)。推荐采用 PascalCase 命名法,例如 `InstallTest.py`[^5]。 2. **基本打包命令** 进入包含要打包Python 脚本的目录,在终端或命令提示符中运行以下命令: ```bash pyinstaller your_script_name.py ``` 此命令会生默认的可执行文件以及必要的依赖项。生的结果通常位于 `dist` 和 `build` 文件夹中。 3. **优化选项** - 如果希望生单个文件而不是整个文件夹结构,则可以在命令后面加上 `--onefile` 参数: ```bash pyinstaller --onefile your_script_name.py ``` - 若要隐藏控制台窗口(适用于 GUI 应用程序),还可以添加 `--noconsole` 或 `-w` 参数: ```bash pyinstaller --onefile --noconsole your_script_name.py ``` 4. **验证生EXE 文件** 当打包过程完后,进入 `dist` 文件夹找到生的 `.exe` 文件并尝试运行它。需要注意的是,尽管该 `.exe` 是由原始 `.py` 文件转换而来,但其工作路径可能有所不同,因此需特别留意相对路径相关的逻辑处理[^3]。 #### 注意事项 - 文件文件夹名称应当规范化,防止因非法字符引发问题。 - 对于复杂项目,建议查阅官方文档学习更多高级功能,比如通过 spec 文件自定义配置[^4]。 ```python # 示例代码片段展示简单的 Hello World 程序 def main(): print("Hello, this is a test program.") if __name__ == "__main__": main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值