Bootstrap

Python程序的轻量化打包及模块缺失问题的解决

摘要

采用Pyinstalle插件对python编写好的程序打包成exe文件,一般有两种方式:一直直接采用当前的编写环境打包,这种方式一般不会出错,但由于将整体环境打包,导致将程序不需要的插件也包含在内,导致打包后的软件很大,打开也比较慢,不宜后期使用;另一种方式重新建立虚拟环境,在虚拟环境中只安装程序运行必需的插件,然后在打包,这样打包后的软件较小。本文主要介绍在虚拟环境中打包的方法,主要流程是:采用pycharm安装虚拟环境、安装程序必要的插件、打包、解决部分未导入插件问题。

1.虚拟环境的建立

打开pycharm软件,依次点击File/New Project,在Location中设置虚拟环境路径,在New environment using中设置选择”Virtualenv”,Base interpreter选择某个Python版本,没有的话先python官网下载装一个。

 图1 虚拟环境建立

2.安装程序必要的插件

依次点击File/Settiings,在打开Settings对话框中选择建立好的环境,点击“+”按钮,在弹出的Available Packages对话框的搜索栏输入想要安装的插件,选中插件后点击Install Package安装。如之前没有安装过Pyinstalle插件,也可在此步安装,否则不需要再安装。

 图2 插件的安装

3.打包操作

将python编写好的程序拷贝到建立的虚拟环境文件夹下,测试没有问题后即可开始打包。在pytharm的Terminal输入框中输入以下命令后:“Pyinstaller -F -w 文件名.py”,等待打包结束。打包技术后生成的exe文件在dist文件夹里面。

 图3 程序的打包

4.打包的软件运行提示缺少Module的问题

由于第三方包隐式调用其他包,导致没有被打包进入,软件运行会提示:ImportError: No module named “模块名”。

解决办法:以记事本打开生成的“XX.spec”,在hiddenimports中添加相应的提示缺少的模块名。然后在pytharm的Terminal输入框中输入以下命令后:“Pyinstaller 文件名.spec”,等待打包结束。结束后再运行生成的软件测试是否成功,不成功的话继续添加提示缺少的其他模块,直到软件正常运行。

 图4 缺失模块的补充

参考文档

  1. 打包完整教程:你似乎来到了没有知识存在的荒原 - 知乎
  2. pycham建立虚拟环境的方法:https://blog.csdn.net/wuzaishiniuzai/article/details/105895715?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-105895715-blog-112078218.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-105895715-blog-112078218.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=1
  3. 解决打包后缺失模块的方法:https://blog.csdn.net/kobeyu652453/article/details/108779501

;