【Python】Python代码在64位电脑上打包发布32位exe程序的一种方法(使用PyCharm)
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)相关推荐
- python把64位程序变成32位_python分别打包出32位和64位应用程序
由于我们分发的python应用可能运行在64位环境,也可能运行在32位环境,所以我们需要为同一套应用代码配置两套打包环境,怎么配置? 步骤如下 1,在电脑上分别下载安装32位和64位的python,安 ...
- Win7 64位系统上配置使用32位的Eclipse
在64位win7 jdk64的系统上跑32位的eclipse ,只需重新安装32位的jdk 修改下eclipse的配置文件即可: 修改eclipse/eclipse.ini文件,在-vmargs参数之 ...
- 定位电脑右下角弹窗对应的进程与程序的一种方法。
利用Spy++ Lite软件 1.下载软件,并运行 2. 点击搜索窗口按钮 3.点击左键并拖动图中的十字准星到弹窗上放开左键 句柄显示了这个窗口对应的进程ID(16进制现实的),利用计算器将十六进制的 ...
- MacOSX64位机器上gcc编译32位x264静态库
x264最新包地址:http://www.videolan.org/developers/x264.html 编译命令: ./configure --enable-static --host=i386 ...
- (转)关于X64位系统IIS7下支持32位asp.net程序
最近在windows2008 x64位系统下的IIS7下部署asp.net程序. vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的.可我的程序在引用了一个三 ...
- 关于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 ...
- python 64位程序 打包用于32位系统_python分别打包出32位和64位应用程序
由于我们分发的python应用可能运行在64位环境,也可能运行在32位环境,所以我们需要为同一套应用代码配置两套打包环境,怎么配置? 步骤如下 1,在电脑上分别下载安装32位和64位的python,安 ...
- Win7/10 64位电脑上如何使用TASM指令
这学期新学一门课程--<汇编语言与接口技术>,这门课程同时附带了一些实验课,其中老师要求使用相关指令对asm文件进行编译.链接以及调试.一般情况下实验室老师提供的TASM.exe和LINK ...
- 32位程序调用64位dll_电脑系统怎样区分32位和64位
一.32位和64位系统的区别: 32位系统和64位系统的区别有以下四点: 第一,CPU要求不同 第二,运算速度不同 第三,寻址能力不同 第四,软件兼容性不同 二.怎么看自己电脑系统是36位还是64位? ...
最新文章
- Reading Paper
- 【安全报告】揭秘创建进程时ebx为什么指向peb的答案
- 计算字符串的实际长度
- 文件的上传和下载---学习笔记
- 民科微服务小程序怎么注册_民科微服务小程序(医师护士电子化注册系统入口)公众号...
- iOS Universal Links 配置教程
- 高并发系统中的限流应该如何做?
- iptables常用配置规则
- PHP操作MongoDB
- Android模拟器无法启动
- Day4:python之文件操作、函数初识(2)
- c\c++中比较两个字符串或string对象是否相等
- .net core2 发送电子邮件封装
- C++中map的遍历的代码
- MySQL数据库设计-案例
- 如何在CAD中插入一个自定义对象?
- Swift如何实现与JSON互转
- 消息中间件RabbitMQ
- 红外光电测速传感器电路设计
- linux-一条命令,找出包含指定字符串的进程并杀死