本文是对自己学习过程的一个记录和总结,如果内容有误,请大家指点,感谢。
注意:
因为64位的.exe文件不能直接在32位系统上运行,所以需要将程序打包为32位的.exe文件,要想执行这个打包过程,必须依赖于32位的Python环境。本文是在Windows10 64位系统环境下进行打包的【默认打包为64位.exe】,经过尝试,以下两种基于Pyinstaller库的方法,均能将Python程序打包为32位的.exe文件,并且在32位的win7系统上成功运行。
方法一:【在Win10系统上安装32位版本的Python】
如果您是像我一样的小白,我建议直接卸载电脑上已经安装好的64位版本Python,重新安装32位【打包的.exe文件要在win7系统上运行,最好是安装3.9以下版本的Python】,新手尽量不要同时安装64位和32位版本的Python,否则您会遇到环境变量、pip、各种依赖库版本等等问题。
步骤一【查看Pyhton版本】
查看已安装Python版本的方法有很多,例如在已安装的程序中找到Python IDLE的位置,如下图所示,可以看到我安装的是3.9版本的32位Python。
也可以通过按键盘"Win+R"快捷键,在打开的"运行"对话框中,输入"cmd"按回车,在打开的黑色命令提示符窗口中,输入"python"按回车,查看完后输入exit()按回车,退出Python交互式,如下图所示。
如果您不是Python32位,就可以考虑需不需要重装Python了,安装Python的教程有很多,这里我就不详述了,请自行查找安装教程。
步骤二【安装打包程序依赖库】
当然,在打包程序前,您得检查一下,需要打包程序所依赖的库是否已经安装好了,.exe文件能在无Python环境下运行,是因为在打包程序的时候,所依赖的库也进行了相应的打包。所以对应库都没有安装的话,打包出来的.exe就....。我们通过按键盘"Win+R"快捷键,在打开的"运行"对话框中,输入"cmd"按回车,在打开的黑色命令提示符窗口中,输入以下命令查看已经安装的库。
pip list
如果需要打包的Python程序已经能在您电脑上顺利运行了,那么对应的库就算安装好了的。此时就可以使用pip工具安装Pyinstaller库了,在命令窗口中输入:
pip install Pyinstaller
我是已经安装了Pyinstaller ,所以提示了版本等信息。
步骤三【打包程序】
新打开一个命令提示符窗口,并以管理员身份运行。
此时我们需要让命令行进入到需要打包的程序目录下,如下图所示,我的命令行最开始是在C盘的Windows\system32目录下,而我的程序是放在C盘的Users\xx\Desktop\python目录下,所以我需要先使用命令"cd .."返回上一级目录,再使用"cd .."再返回上一级目录,此时命令行就处于C盘目录下,我再使用"cd Users\xx\Desktop\python"就进入到程序所在目录了,请根据自己程序所在路径进行此步骤。
当命令行进入到程序所在目录后,我们直接运行以下命令即可进行打包,"-F"代表只生成一个.exe文件,"-w"代表在Windows子系统下启动此程序时,不会打开命令行。
Pyinstaller -F -w 程序名.py
执行完命令后,结果如下表示成功,此时文件夹中会产生几个文件,.exe在dist文件夹下,可以将build等多余的文件删除掉,.exe文件也可以移动到其它目录下。
当我双击.exe文件后,打开任务管理器,可以看到我们打包的32位.exe程序已经在运行了。
此时,我们已经顺利完成打包。
方法二:【在Anaconda软件中创建虚拟环境,在虚拟环境中使用32位版本的Python进行打包】
Anaconda 是一个用于科学计算和数据分析的开源软件包管理和环境管理系统。它提供了一个方便的方式来安装、管理和切换不同的 Python 环境,以及安装和管理各种科学计算和数据分析所需的库和工具。我们可以在这个软件中创建一个虚拟的环境,在这个虚拟且独立的环境中可以随意配置我们想要的Python版本,并且不会被电脑已安装的Python以及库影响。Anaconda的安装教程请自行查找,这里不再详述。
步骤一【创建虚拟环境】
以管理员身份运行已安装好的Anaconda Prompt。
在命令行中输入以下命令创建一个虚拟环境,其中my_base是我自定义的虚拟环境名字,python=3.7是虚拟环境中使用的Python版本,这两处您可以根据自己需求进行更改。
conda create -n my_base python=3.7
中途会让您确认是否安装上述的那些库,直接输入y回车即可。
虚拟环境创建完成后,如下图所示。
可以通过命令查看现在已有的虚拟环境:
conda env list
下图中py37是我之前创建的,您应该是只有base和刚创建的虚拟环境名字,我们目前的所有操作都是在base环境下进行的,从下图的命令行开头可以看出来。
此时,我们需要进入到刚创建的虚拟环境中,使用以下命令,请把name替换为自己的虚拟环境名字。
conda activate name
可以看到,使用命令后,我们的命令行开头变成了刚创建的虚拟环境名字,说明现在是在刚创建的虚拟环境中了,此时使用的命令,只对这个虚拟环境生效。
在打包程序前,我们需要确认当前虚拟环境的Python版本和位数,因为我们需要32位的Python版本进行打包,在命令行中输入python,即可查看版本。
通过上图可以看到,我们创建的Python版本虽然没问题,但是Python位数还是64位。原因是我们的电脑是64位的,在创建虚拟环境的时候,我们指定了Python版本,但Python位数还是默认和电脑位数相同,就导致了我们创建出来的虚拟环境还是64位的Python。原因找到了,我们先在命令行中输入exit()退出Python交互式,请看上图。
此时我们需要输入以下命令,退出当前虚拟环境,返回到base环境中:
conda deactivate
既然刚才创建的虚拟环境没有用,那我们就使用 以下命令删除它,请把my_base改为自己的环境名。
conda env remove --name my_base
使用命令conda env list可以查看到,刚创建的虚拟环境已经被我们删除了。
conda env list
步骤二【暂时更改电脑位数】
使用以下命令,暂时将电脑位数更改为32位,输入按回车后没有任何反应。
set CONDA_FORCE_32BIT=1
此时我们重新按【步骤一】创建虚拟环境,虚拟环境名字尽量更换一个,我换成了my_py,中途同样输入y进行确认,创建完成后使用conda env list确认虚拟环境已经创建。
conda env list
虚拟环境已经创建完成,此时我们再使用以下命令把电脑位数改回64位。
set CONDA_FORCE_32BIT=0
步骤三【进入虚拟环境,安装依赖库】
使用命令conda activate name进入虚拟环境,请把name改成自己的环境名字。进入环境后,同样输入python,查看版本号和位数。查看完成后,同样输入exit()退出Python交互式,请看下图。
conda activate name
通过上图可以看到,此时的Python位数已经是32位了。在进行程序打包之前,需要注意的是,当前虚拟环境只安装了一些基础库,我们需要在此环境中安装打包程序的Pyinstaller库和您程序依赖的所有库。
使用以下命令,安装Pyinstaller库,请您自行安装程序依赖的其它库。
pip install Pyinstaller
步骤四【打包程序】
在打包程序前,我们同样要使命令行进入到Python程序所在目录,详细步骤请参考【方法一】,实际过程请看下图:
进入到目录下后,使用以下命令进行打包。
Pyinstaller -F -w 程序名.py
打包完成后,.exe程序在dist文件夹下,build等文件可以删除。
我们双击运行.exe文件后,打开任务管理器,可以看到,正在运行的程序也是32位。
至此,两种方法均已实现32位程序的打包。
参考:
【1】将Python程序打包成exe文件_python打包成exe_小康2022的博客-CSDN博客
【2】https://www.cnblogs.com/wheaesong/p/14742812.html#/c/subject/p/14742812.html