Bootstrap

Win10下把Python程序打包成32位.exe文件

本文是对自己学习过程的一个记录和总结,如果内容有误,请大家指点,感谢。 

注意:

        因为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

;