目录

壹、方法简介

贰、安装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博客

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

  1. 关于python在64位机器上打包32位exe(兼容xp系统)解决方法

    python在64位机器上打包32位exe 1.下载32位python 3.4.4及以下版本支持xp,32位3.4.4下载地址https://www.python.org/ftp/python/3.4 ...

  2. 64位的电脑比32位的电脑跑的快么?「多图预警」

    前言 代码写了那么多,你知道 a = 1 + 2 这条代码是怎么被 CPU 执行的吗? 软件用了那么多,你知道软件的 32 位和 64 位之间的区别吗?再来 32 位的操作系统可以运行在 64 位的电 ...

  3. 32位算术逻辑运算单元alu设计_64位的电脑比32位的电脑跑的快么?多图预警

    前言 代码写了那么多,你知道 a = 1 + 2 这条代码是怎么被 CPU 执行的吗? 软件用了那么多,你知道软件的 32 位和 64 位之间的区别吗?再来 32 位的操作系统可以运行在 64 位的电 ...

  4. 64位电脑 装32位oracle,64位Windows可以安装32位的Oracle吗

    嘿服类 回答数:37  |  被采纳数:91 2017-04-21 07:22:43 64位的win7 完全可以安装32位的oracle. 安装方法如下: 首先,要解除oracle安装的windows ...

  5. 计算机32位如何变成64位,我电脑是32位的

    2017-10-19 09:12:01 你要换成64位只有重新更换系统,重装一套64的,主要还是底层代码不一样,实际是看不出的 全部 2017-10-19 09:12:01 2017-10-19 09 ...

  6. Pyinstaller如何打包多个资源文件(超详细教程)

    有时我们需要将python源程序使用pyinstaller打包成可执行exe发布,而除了我们常用的添加exe图标功能外,很多时候还希望能把各种图片.声音.字体等资源打包到exe中.尤其是在使用&quo ...

  7. 计算机操作系统32跟64区别是什么,32位和64位的区别 怎样区分电脑操作系统32位和64位...

    32位的操作系统最多支持4G的内存,64位系统则可以支持128G甚至更大;在处理数据的能力上64位的系统上比32位系统快一倍;32位的电脑只能运行32位的软件,而64位的电脑可以运行32位的软件也可以 ...

  8. pythonexe32位-如何使用pyinstaller打包32位的exe程序

    说明:原来安装的python为64位,故安装的pyinstaller和打包后的exe都为64位.而64位的exe文件在32位的win7操作系统下是无法执行的,显示不兼容.网上查询发现,简单(可能不方便 ...

  9. pythonexe32位-如何使用pyinstaller打包32位的exe

    说明:原来安装的python为64位,故安装的pyinstaller和打包后的exe都为64位.而64位的exe文件在32位的win7操作系统下是无法执行的,显示不兼容.网上查询发现,简单(可能不方便 ...

最新文章

  1. 使用OKR管理好团队这四个高深的技巧要明白
  2. 只显示小方格_木托盘拼成院子围栏,镂空方格里都种上菜,一物两用,收获满满...
  3. 软件定义闪存:加速闪存规模化应用
  4. android怎么打开wifi的组播功能
  5. [转]程序实现调用迅雷(以C#为例)
  6. JavaScript习题(数组去重、有序数组乱序排列)
  7. SVD 与 PCA 的直观解释(3): SVD的直观解释及推导
  8. 升级指南:将 SharePoint Portal Server 2003 升级到 Office SharePoint Server 2007
  9. 一行代码,Pandas秒变分布式,快速处理TB级数据
  10. 弥散阴影html,三步制作出这种精美弥散阴影
  11. 2020-11-11 对象与类
  12. java怎么实现直方图均衡化_直方图均衡化原理与实现
  13. 2017.4.8微软笔试题
  14. 关于ddos你了解多少?
  15. 开源新作!三个月啃透888页Java王者级核心宝典,大厂面试必备技能
  16. Yapi idea插件使用
  17. idea手工添加jar依赖包
  18. 局域网视频通讯-Android APP
  19. Spring Boot 和 Spring 有什么区别
  20. 团队管理5--技术管理如何兼顾技术

热门文章

  1. Golang 发送html Gmail邮件
  2. 给oracle scott权限,Oracle Scott创建视图权限不足解决办法
  3. 天涯明月刀7月4号服务器维护,8月4日服务器例行维护公告
  4. 四个小方块组成一个方块的标志_四个“口”字组成一个方块的是什么牌子的标志?...
  5. 连接雅虎财经API获取股票信息
  6. 桥接模式(Bridge Pattern)
  7. 全球及中国金属硅行业产值状况与竞争格局分析报告2022版
  8. 使用ATmega8L-8PU 在面包板上搭建自己的Arduino ,并闪亮一个LED
  9. uva12627 Erratic Expansion
  10. slide-view 微信小程序官方左滑删除组件