利用Pycharm将Python程序生成.exe执行文件
文章分两部分:①直接操作将python程序变成.exe文件;②过程中碰到的问题。
一、直接上手,如何操作,用Pycharm将Python程序生成.exe执行文件
1、先写好自己的程序,这根据自己的需求编写,笔者写的程序如下,红框代表主程序。
2、上Pycharm,打开程序,安装Pyinstaller, 这就是将程序转化exe的工具。
安装有2种方法:
方法①:在设置里添加,具体步骤见下图
1、Pycharm左上角 File 选择Settings
2 Python Interpreter - > 点击图中第2步 “+” 号
3 检索pyinstaller ,选中点击安装
方法②:打开Pycharm ,点击Terminal终端,而后在编辑栏输入pip install pyinstaller即可安装。
3、生成exe
在Terminal框中编辑 pyinstaller -F -w Select_Data.py
其中Select_Data.py 是笔者的主程序名称,你可以根据自己的主程序不同而变成不同名称;
-F(注意大写)是所有库文件打包成一个可执行文件,windows下是exe,Linux下是对应的可执行文件;
-w是运行exe文件时禁止弹出黑色控制台窗口。如果你的项目调用了图片等本地资源,请将你的可执行文件放在对应目录才能运行。
下图是执行pyinstaller -F Select_Data.py,不带-w生成Select_Data.exe,笔者运行该exe后发现有个大黑框。
运行完成会多出如下几个文件,用红框标出,其中需要的exe文件在dist文件夹中
点开dist文件夹,生成的exe
就可以双击exe直接运行程序,运行效果见下图
至此,基于Pycharm将Python程序生成可执行exe文件的所有步骤均已完成。
后面再说些笔者遇到的坑。
二 、操作过程碰到的问题
1 安装Pyinstaller问题
问题描述: 百度一下如如何将python生成exe文件,搜索的方法清一色均是用cmd命令--->pip3 install pyinstaller,然后我用pip命令安装后总是报如下错误,试了很多种方法均没有解决。也许有些人能直接安装吧。。。。。。
解决方法: 见文章上面描述, 2、上Pycharm,打开程序,安装Pyinstaller, 这就是将程序转化exe的工具 。
2 执行pyinstaller -F -w Select_Data.py报错: raise AttributeError(
AttributeError: Module 'PyQt5' has no attribute '__version__'。见下图
问题描述: 见上图描述
解决方法: 仔细看错误AttributeError: Module 'PyQt5' has no attribute '__version__',里面有PyQt5,因为的GUI程序使用tkinker搭建的,因此只有tkinker库,并没有PyQt5库。也许是tkinker库有引用到PyQt5,因此直接增加PyQt5库,方法见上文: 2、上Pycharm,打开程序,安装Pyinstaller, 这就是将程序转化exe的工具 ,关键字检索PyQt5,安装即可 。
3 生成的exe文件太大
问题描述: 笔者生成的exe文件300多M,整个.py文件都没有几k,生成的exe大小300M,太不便捷了。
原因分析: Pycharm中创建的虚拟环境所包含的库太大,一些用不着的库也都包含在里面了。见图虚拟环境路径,C:\install\anaconda\python.exe,找到对应包的位置:C:\install\anaconda\Lib\site-packages,见下图。发现足足有1G大小。
解决方法: 创造新的虚拟环境,安装自己需要的库,根据虚拟环境路径找到包的大小见下图,只有133M。
创建新的虚拟环境方法见链接:
而后在Pycharm 的Terminal终端继续输入pyinstaller -F -w Select_Data.py,最终得到的exe只有29M,减小了10倍。
4 执行pyinstaller -F Select_Data_forALL.py报脚本文件未找到错误
script 'F:\process_data\polar_curve\SelectData_exe\Select_Data_forALL.py' not found
背景描述: 执行pyinstaller -F Select_Data_forALL.py报脚本文件未找到错误,见下图。可是明明主程序脚本文件存在。
解决方法: 经查找DOS不支持Windows的长文件名, 因此将主程序名称改短些即可。即将pyinstaller -F Select_Data_forALL .py ------>换成pyinstaller -F Select_Data .py即可