pyinstaller64位windows电脑打包32位exe 5500字超详细教程

news/2025/2/16 6:42:47/

目录

壹、方法简介

贰、安装32位python

一、下载安装包

二、安装python

叁、安装第三方库

一、检查安装

二、安装第三方库与pyinstaller

三、pyinstall

肆、打包exe文件

一、配置.spec文件 

二、打包!打包啦!

伍、验收 

 陆、后记

 参考资料


壹、方法简介

哇,这个问题整了我一个早上,终于解决,发个文章说一下,以此记录。

网上流行两个办法,用

anaconda布置32位python虚拟环境

或者

下载,使用32位python的pyinstaller

我用anaconda就是无法布置虚拟环境,并且anaconda下载,安装都超级慢,所以我推荐你使用第二种办法。

(如果你的anaconda可以顺利布置虚拟环境,那你当我没说,你可以去看这篇文章,顺路帮我看看有没有用)

提示:

本文介绍的是如何使用32位python打包exe文件,不会介绍使用anaconda的办法

贰、安装32位python

一、下载安装包

先去下载32位的python(一定是32位的!!)

下载链接

点击这里,下载32位的python安装包 

提示:

如果你不想下载3.9.7也可以,版本可以随意

二、安装python

双击运行安装包

一定要把add python to path勾选!!!自己配置环境变量会很麻烦。主要是我懒得教你配置环境变量

然后选择箭头指向的自定义安装

接着勾选pip,这样可以安装第三方库,其他默认即可

如果有需要更改安装路径的在此处更改 

建议:

自己创建一个文件夹,放在较浅的目录,windows默认安装目录很深,文件夹最好起一个与原64位python有区别的名字(例如我起的是python32bit)然后把32位python安装在此文件夹下

点击install,一小会之后,python32位就安装好啦!

叁、安装第三方库

一、检查安装

进入刚刚安装的python32位的文件夹

注意!

接下来文章中的“python”指的都是刚刚安装的32位python,而不是原来的64位

首先记得更改一下python.exe的名字(例如改成python32.exe),才能在cmd上与原64位python区分开

打开命令提示符cmd(powershell也行)

提示:

win+r快捷键,然后输入cmd,就可以打开命令提示符

输入(就是你刚刚更改python.exe的名字)

python32

如果有类似输出就没问题了

注意检查一下红框处,确认安装的是32位

提示:

输入

exit()

 可以退出python控制台

二、安装第三方库与pyinstaller

然后你如果在项目中有使用第三方库(例如我有使用pygame)

用此命令安装

python32 -m pip install <包名>

不要漏了前面的python32!!否则就会安装到原64位的python上

提示:

如果安装太慢可以使用镜像安装

python32 -m pip install -i http://pypi.tuna.tsinghua.edu.cn/simple/ <包名>

三、pyinstall

最后也要记得把pyinstaller安装上

python32 -m pip install pyinstaller

还要安装它的依赖模块

python32 -m pip install pywin32

接着找到python32的安装位置,进入Scripts文件夹

四处看一看……

好!这就彳亍了 ,接下来就全靠pyinstall.exe这个应用程序了

肆、打包exe文件

大多数网上的文章都说一个命令可以解决大部分情况,然而事实是

那我们应该怎么做呢?

一、配置.spec文件 

新建一个<filename>.spec文件,名字可以随意,放在python32安装目录的Scripts文件夹下

源代码可以不用放入此文件夹中

提示:

可以使用记事本打开,我使用的是sublimetext文本编辑器,有兴趣的可以查看这篇文章

此处我以我自己编写的扫雷游戏为例(使用模块pygame)

打开,将代码复制进去

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['<源代码路径1>','<源代码路径2>'],#可以有多个源代码路径pathex=['<源代码所在主文件夹>'],binaries=[],datas=[(<资源路径>,<资源输出路径>)],#可以有多个元组#输出路径为相对路径,相对于pyinstaller自动创建的输出文件夹#若有需直接放入输出文件夹的文件,datas中元组第二项可以为'.'hiddenimports=[<遗漏模块补充>],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)exe = EXE(pyz,a.scripts, [],exclude_binaries=True,name='<app名>',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,disable_windowed_traceback=False,target_arch=None,codesign_identity=None,entitlements_file=None )
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas, strip=False,upx=True,upx_exclude=[],name='<输出文件夹名>')# -*- mode: python -*-block_cipher = None

模块遗漏问题:pyinstaller在进行打包时,会解析打包的python文件,自动寻找py源文件的依赖模块。但是pyinstaller解析模块时可能会遗漏某些模块(not visible to the analysis phase),造成打包后执行程序时出现类似No Module named xxx。这时我们就需要在Analysis下hiddenimports中加入遗漏的模块。

例如:你遗漏了pandas模块,则hiddenimports应该写成这样

hiddenimports=[
'pandas',
'pandas._libs',
'pandas._libs.tslibs.np_datetime',
'pandas._libs.tslibs.timedeltas',
'pandas._libs.tslibs.nattype',
'pandas._libs.skiplist',
]

根据错误信息自己补全列表

注意!

阅读完后要将格式代码中的注释全部删掉。主要是我也不知道会发生什么事情

示例代码:

# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['D:\\python32bit\\Scripts\\pyinstaller32bit\\minesweeper\\minesweeper.py',],pathex=['D:\\python32bit\\Scripts\\pyinstaller32bit\\minesweeper'],binaries=[],datas=[('D:\\python32bit\\Scripts\\pyinstaller32bit\\minesweeper\\images','images')],hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)exe = EXE(pyz,a.scripts, [],exclude_binaries=True,name='minesweeper',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,disable_windowed_traceback=False,target_arch=None,codesign_identity=None,entitlements_file=None )
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas, strip=False,upx=True,upx_exclude=[],name='minesweeper')# -*- mode: python -*-block_cipher = None

根据需要自行补全<括号>中的信息,并将括号替换为引号,然后保存退出

注意!

路径中的分隔符"\"要写成"\\"的形式,别问我为什么,问它

二、打包!打包啦!

终于,在经历一大堆繁杂的步骤之后,我们开始打包!

使用管理员权限打开cmd命令提示符(或者powershell)

进入python32安装目录下的Scripts文件夹

使用命令

python32 pyinstaller.exe -D <.spec文件名>

解释一下:

"-D"是会生成一系列支持文件,放在输出文件夹中,若将"-D"替换为"-F"就只会生成一个.exe文件

应用打开后会弹出一个黑色窗口(就是cmd),如果不想这样的话,则在"-D"后加入" -w"(别忘了空格)。

但两者都不建议替换,因为弹出cmd窗口可以显示错误信息(就是traceback),使用"-F"生成的单个.exe文件必须要使用cmd启动应用,不可以双击启动。

不出意外的话,你会看到一大堆输出,我相信我们都看不懂,有问题吗?没有问题。只要看最后一行

好!

伍、验收 

回到Scripts文件夹,会发现多了两个文件夹在里面

bulid可以直接删除,不会有任何影响。

dist里面就是输出文件夹,打开来,翻一翻

有个minesweeper.exe,打开,一切顺利!

 

 陆、后记

哇,真的不容易,终于码完啦!

 希望本文章能为在互联网上苦苦寻找资料的你有所帮助,我也是翻了了好久资料,把32位python卸了又装,卸了又装,写文章中途还差点翻车

 还好还是终于写到了这里,CSDN新人,python新手,如有错漏之处请指出,我会认真认错,坚决不改认真改正。

至于文章中提到的扫雷程序,这里有链接,有兴趣的可以拿去玩

链接:在这里
提取码:a3fe

还有还有,如果你想最后卸掉python32的话,要把python32.exe的名字改回来,要不然......

 参考资料

Pyinstaller 打包发布经验总结_YanHua_jake的博客-CSDN博客

如何使用pyinstaller打包32位的exe_weixin_34087503的博客-CSDN博客


http://www.ppmy.cn/news/502182.html

相关文章

pycharm+pyinstaller将单个py打包成32位或64位exe

1.打包成64位的exe 1.1 安装pyinstaller库 pip install pyinstaller 这种方法安装速度很慢&#xff0c;所以要换成镜像源 pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple #后面跟上国内的镜像源 """ 国内的一些源&#xff1a;清华&a…

64位程序与32位程序区别

概述 从32位到64位&#xff0c;根本性的区别在于两种数据类型发生了变化&#xff1a;long和pointer。在32位环境下&#xff0c;顾名思义&#xff0c;两者长度都是32位&#xff0c;也就是4个字节&#xff1b;而在64位环境下&#xff0c;都是8个字节。所以&#xff0c;当…

C编程注意32位机器和64位机器的差别及unsigned和signed

1.64bit CPU拥有更大的寻址能力&#xff0c;最大支持到16GB内存&#xff0c;而32bit只支持4G内存 2.64位CPU一次可提取64位数据&#xff0c;比32位提高了一倍&#xff0c;理论上性能会提升1倍。但这是建立在64bit操作系统&#xff0c;64bit软件的基础上的。 C/C 32位机器和64…

面试官:说说32位和64位

在软件的世界里&#xff0c;有32位软件和64位软件&#xff0c;那么你是否想过32位和64位软件有什么区别吗&#xff1f;下面我就带领大家来看看32位和64位的区别。 第一个64位操作系统 首要的区别是32位和64位CPU的指令集合、操作数位数、寄存器名称和个数都不相同。例如mov e…

切换使用32位和64位的nodejs

切换使用32位和64位的nodejs 应用场景安装nvm查看已安装node版本列表安装node版本切换node版本卸载node版本命令汇总 应用场景 node对接32位动态链接库dll需要32位的nodenode对接64位动态链接库dll需要64位的node 安装nvm 下载地址&#xff1a;https://github.com/coreybutl…

PE结构详解(64位和32位的差别)

1 基本概念 下表描述了贯穿于本文中的一些概念&#xff1a; 名称 描述 地址 是“虚拟地址”而不是“物理地址”。为什么不是“物理地址”呢&#xff1f;因为数据在内存的位置经常在变&#xff0c;这样可以节省内存开支、避开错误的内存位置等的优势。同时用户并不需要知道具体的…

【py打包】通过pycharm在64位电脑上打包32位exe文件

因为各种原因&#xff0c;需要我把我写的py程序打包成exe文件给没有python环境的电脑使用&#xff0c;而那个电脑是32位系统的遗民&#xff0c;通过一系列摸索&#xff0c;终于解决了&#xff0c;记录一下。 在有源码的情况下&#xff0c;想让32位电脑能运行&#xff0c;无非两…

32位计算机精度,32位计算机和64位计算机有多大区别!

【【yzwaft】32位计算机和64位计算机有多大区别&#xff01;】http://toutiao.com/group/6532802890778542600/?iid15906422033&appexplore_article&timestamp1521341712&tt_fromcopy_link&utm_sourcecopy_link&utm_mediumtoutiao_ios&utm_campaigncl…