1. 背景

现在的电脑大多都是64位的,开发者安装的 Python 也多是64位的,所以使用 pyinstaller打包出的exe也是64位的。

有时候用户的电脑是古老的windows7 32位系统,那么是无法运行我们打包出的64位exe软件的。这个时候就需要我们安装使用32位的Python来打包和发布软件。

本文即说明在普通的已经安装有64位Python和PyCharm的开发环境下,如何简洁干净的安装 32位 Python,并顺利打包和发布 32位的软件。

2. 配置32位Python解释器

2.1 当前电脑配置

Window 10 64位,Python 3.7 64位,PyCharm 社区版。

2.2 下载 32位 Python

在Python官方网站上找一个适合的版本下载。或者简单点,可以用我安装使用的这个版本:Python3.8.10_32位_win7win10,适合win7和win10的32位安装版。

2.2 安装时的注意事项

安装该python 32位版本的过程中,注意不要配置环境变量。

因为我们安装32位的Python仅仅是用来创建虚拟python环境,不是当作主力Python使用的。如果把这个32位版本,加入到了系统环境变量 PATH,我们电脑的默认python就从以前使用的 64位 变成 新安装的 32位 版的了。

下面是安装的配置选项截图。

【注意勾选 Install for all users】

【注意不要勾选 Add Python to environment variables】

这样,我们的32位 Python就已经安装好了,它会被安装到 C:\Program Files (x86)\Python38-32 文件夹内。

2.3 配置PyCharm

下面我们来配置PyCharm。

在PyCharm选中Project项目,依次点击File-Setting-Project-Python Interpreter。查看本项目在用的Python解释器配置情况和已安装的第三方库。可以看到当前在使用的 64位 Python。

下面,我们来新增一个 Python解释器环境。 (解释器类似于翻译器,对于同一段代码,不同的解释器环境解释出来的Python结果不同。同样一句“你好”,汉英解释器会解释成 hello,汉日解释器会解释成 こんにちは)

1. 依次点击:齿轮->Add

2. 在界面中操作:

Location: 直接修改文件夹名称

Base Interpreter:选择刚安装的 32 位的 Python.exe

然后,就能看到该项目出现了2个Python环境,每个环境下面的Package是不一样的。

下面我们为 32位的 Python环境安装 第三方库 Package。

Python Interpreter处选中刚配置好的 32位Python,点击下方 + 号,安装自己需要的第三方库。注意,要把自己用到的第三方库全都重新安装一遍(与64位python的第三方库是隔离的)。

注意:pyinstaller库是必须要安装的,有了它,我们的软件才能打包成exe发布。其它的包,比如PyQt5是我项目中用到的,不是必须安装的。

常用的第三方库安装后如下图。

这样,该项目的32位Python解释器环境就配置好了。

2.4 试验

我们来试验一下。右键点击随便一个 xxx.py ,选择 open in -> Terminal。

然后在 Terminal 中输入 python ,查看结果。

如果如下图一样,显示的是我们刚安装的 Python 3.8.10 并且 出现 32 bit 就说明该项目的 32位 Python 解释器环境是确实配置好了。

如果显示的还是以前的64位python,那可能是  File-Setting-Project-Python Interpreter 这里没有选中我们新配置的python环境。如下图所示,要选中那个 32位的Python,然后确定。

3. 标准的python软件打包和发布流程

该流程可参考:脚本之家-Python如何发布程序的详细教程

此处列出快捷且关键的步骤。

3.1 打包命令

其原理很简单,就是使用命令:

pyinstaller -F -w main.py

-F, –onefile 打包成一个exe文件。
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-c, –console, –nowindowed 使用控制台,无界面(默认)
-w, –windowed, –noconsole 使用窗口,无控制台

关键的点在于使用哪个(which) pyinstaller.exe。

3.2 实际操作

在PyCharm中,首先确保该项目的解释器是 32位 解释器。

然后右键点击你将要打包的py文件,该文件必须是程序入口文件(带有 if __name__ == __main__ 代码),找到Open in terminal点一下,Pycharm底部会出现Terminal窗口。

输入命令:

pyinstaller -F -w main.py

稍等片刻,就会在 dist 文件夹内发现打包好的 exe 软件。

3.3 交付

将打包好的.exe文件放入项目所在文件夹,将所有需要的素材(图片、音乐等)一起发送,压缩成包。对方解压后,即可当作绿色软件运行。

注意:在Python代码中使用 相对路径 索引/使用的 文件,都必须按对应文件夹路径 放置在 .exe 周围。如在 xxx.py 中使用了 ./assert/mypic.png 文件,则 .exe 旁边必须也要有 ./assert/mypic.png文文件夹及文件。如果yyy.py 代码中使用 loadui(‘mydlg.ui’) 方式加载了 mydlg.ui 文件,同样的,mydlg.ui 也要复制到 .exe 同文件夹内。

4. 其它

之所以能这么操作,其实使用到了Python虚拟运行环境。我们刚才在PyCharm中新增的就是 virtualenv 软件虚拟出的32位python运行环境。详细了解参考:此文。

虚拟运行环境有以下优点:

  • 使得不同Python应用的开发环境相互独立
  • 开发环境升级不影响其他应用的开发环境,也不会影响全局的环境(默认开发环境是全局开发环境),因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境进行 pip install 时,只会安装到选择的虚拟环境中。
  • 它可以防止系统中出现包管理混乱和版本的冲突

如有疑难问题,可评论留言。

【Python】Python代码在64位电脑上打包发布32位exe程序的一种方法(使用PyCharm)相关推荐

  1. python把64位程序变成32位_python分别打包出32位和64位应用程序

    由于我们分发的python应用可能运行在64位环境,也可能运行在32位环境,所以我们需要为同一套应用代码配置两套打包环境,怎么配置? 步骤如下 1,在电脑上分别下载安装32位和64位的python,安 ...

  2. Win7 64位系统上配置使用32位的Eclipse

    在64位win7 jdk64的系统上跑32位的eclipse ,只需重新安装32位的jdk 修改下eclipse的配置文件即可: 修改eclipse/eclipse.ini文件,在-vmargs参数之 ...

  3. 定位电脑右下角弹窗对应的进程与程序的一种方法。

    利用Spy++ Lite软件 1.下载软件,并运行 2. 点击搜索窗口按钮 3.点击左键并拖动图中的十字准星到弹窗上放开左键 句柄显示了这个窗口对应的进程ID(16进制现实的),利用计算器将十六进制的 ...

  4. MacOSX64位机器上gcc编译32位x264静态库

    x264最新包地址:http://www.videolan.org/developers/x264.html 编译命令: ./configure --enable-static --host=i386 ...

  5. (转)关于X64位系统IIS7下支持32位asp.net程序

    最近在windows2008 x64位系统下的IIS7下部署asp.net程序. vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的.可我的程序在引用了一个三 ...

  6. 关于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 ...

  7. python 64位程序 打包用于32位系统_python分别打包出32位和64位应用程序

    由于我们分发的python应用可能运行在64位环境,也可能运行在32位环境,所以我们需要为同一套应用代码配置两套打包环境,怎么配置? 步骤如下 1,在电脑上分别下载安装32位和64位的python,安 ...

  8. Win7/10 64位电脑上如何使用TASM指令

    这学期新学一门课程--<汇编语言与接口技术>,这门课程同时附带了一些实验课,其中老师要求使用相关指令对asm文件进行编译.链接以及调试.一般情况下实验室老师提供的TASM.exe和LINK ...

  9. 32位程序调用64位dll_电脑系统怎样区分32位和64位

    一.32位和64位系统的区别: 32位系统和64位系统的区别有以下四点: 第一,CPU要求不同 第二,运算速度不同 第三,寻址能力不同 第四,软件兼容性不同 二.怎么看自己电脑系统是36位还是64位? ...

最新文章

  1. Reading Paper
  2. 【安全报告】揭秘创建进程时ebx为什么指向peb的答案
  3. 计算字符串的实际长度
  4. 文件的上传和下载---学习笔记
  5. 民科微服务小程序怎么注册_民科微服务小程序(医师护士电子化注册系统入口)公众号...
  6. iOS Universal Links 配置教程
  7. 高并发系统中的限流应该如何做?
  8. iptables常用配置规则
  9. PHP操作MongoDB
  10. Android模拟器无法启动
  11. Day4:python之文件操作、函数初识(2)
  12. c\c++中比较两个字符串或string对象是否相等
  13. .net core2 发送电子邮件封装
  14. C++中map的遍历的代码
  15. MySQL数据库设计-案例
  16. 如何在CAD中插入一个自定义对象?
  17. Swift如何实现与JSON互转
  18. 消息中间件RabbitMQ
  19. 红外光电测速传感器电路设计
  20. linux-一条命令,找出包含指定字符串的进程并杀死

热门文章

  1. matlab静音检测,matlab去除静音段 | 学步园
  2. 视频融合云服务平台EasyCVR接入设备后播放FLV视频流,报错404是什么原因?
  3. 从0开始学c语言-总结01-c语言的粗略认识和快捷键
  4. 谷歌浏览器Google Chrome插件分享
  5. pyinstaller 打包附带DLL
  6. 胜利学院计算机考试时间,胜利学院2019年3月全国计算机等级考试报名时间
  7. ZooKeeper之常用命令大全
  8. 算法:求10万以内的质数
  9. Oracle函数的确定性
  10. 华师大 OJ 3055