python学习教程之使用py2exe打包
发布时间 - 2026-01-11 03:23:29 点击率:次前言

本文主要给大家介绍了关于python使用py2exe打包的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
遇坑
之前经过折腾,pyinstaller打包文件可以在别的windows7上运行。但是,mfk, 客户说是xp系统。崩溃
使用pyinstaller各种折腾,打包出来的依然是不是有效的win32程序,各种报错。
后来尝试使用 py2exe 打包
使用
1、安装 不废话,下载exe版,傻瓜式安装
2、使用
编写类似一个 setup.py 文件,写各种配置(下边有)
调用命令
python setup.py py2exe
或者在setup.py下添加如下语句,点击文件自动运行
sys.argv.append('py2exe')
官方示例: http://www.py2exe.org/index.cgi/Tutorial
具体参数含义见:http://www.py2exe.org/index.cgi/ListOfOptions
问题
1、不是有效的win32程序
换32位的python,其他模块都重装,包括pyqt5
2、py2exe UnicodeDecodeError: 'gbk' codec can't decode
py2exe 的runtime.py 里 打开文件制定为utf-8
with open(target.script, "U",encoding="UTF-8") as script_file:
3、编译PyQt5 异常
把一句 Exception, e 该为 Exception as e 就好了
4、could not find or load the Qt platform plugin "windows"
把 C:\Python34\Lib\site-packages\PyQt5\plugins 下的 platforms 拷贝到 打包目录下的platforms搞定
5、找不到 msvc**100.dll 问题
把system32 目录下的 msvc**.dll 的三个dll文件拷贝到打包目录下
分享一下完成的打包脚本
from distutils.core import setup
import py2exe
import sys
import os
import glob
import shutil
import msvcrt
#this allows to run it with a simple double click.
sys.argv.append('py2exe')
PYTHON_HOME = os.getenv('PYTHON_HOME')
TARGET_DIR = '../build2'
# 删除原来生成的路径
if os.path.exists(TARGET_DIR):
print("是否删除文件夹(y/n)\t" + os.path.abspath(TARGET_DIR))
d = msvcrt.getch()
if d == b'y':
shutil.rmtree(TARGET_DIR)
print(os.path.abspath(TARGET_DIR)+' 被删除')
def find_data_files(dlist,source,target,patterns):
# 是否有特殊符号
if glob.has_magic(source) or glob.has_magic(target):
raise ValueError("Magic not allowed in src, target")
ret = dlist
for pattern in patterns:
# 给pattern 上添加目录
pattern = os.path.join(source,pattern)
# 通过pattern寻找满足条件的文件
for filename in glob.glob(pattern):
# 判断文件是否存在
if os.path.isfile(filename):
# 获取相对source 的相对路径
relP = os.path.relpath(filename,source)
# 设置为目标路径
targetpath = os.path.join(target,relP)
# 获取目标文件的文件夹
path = os.path.dirname(targetpath)
ret.setdefault(path,[]).append(filename)
print('-------------------')
print('资源拷贝')
data_files = {}
# 拷贝xp需要的msvc**100.dll
find_data_files(data_files,'C:/Windows/System32/','',['msvc*100.dll'])
# 拷贝pyqt5里依赖的dll
find_data_files(data_files, PYTHON_HOME+'/Lib/site-packages/PyQt5/plugins/platforms','platforms',['*.dll'])
# 把当前目录下ui文件夹内容拷贝到目标文件夹的ui文件夹下
find_data_files(data_files,'ui','ui',['*.*'])
# 拷贝配置文件
find_data_files(data_files,'config/','config/',['*.*'])
# 转成键值对集合
data_files = data_files.items()
print(data_files)
print('--------------------------')
OPTIONS = {
'py2exe': {
"includes": ["sip"],# 导入依赖 sip
# "dll_excludes": ["MSVCP90.dll","MSVCR100.dll"],
# 是否压缩 1 压缩。 0 不压缩
"compressed": 1,
# 优化级别。 0 不优化 pyc 1 优化 pyd 2 pyo
"optimize": 2,
# 依赖的包
"packages": ["xml.etree", "xml"],
# 是否把dll打包到压缩包里
# 1 所有的都打包 2 除了python解释器,其他的都打包 3 所有的不打包
"bundle_files": 1,
# 生成的文件夹
'dist_dir':TARGET_DIR
},
}
setup(
name = '登录器',
version = '1.0',
# 需要生成exe文件的 py。因为可能会有多个入口
windows = [
{
'script':'Login.py',
# 图标前的索引依赖ico里的图标数
"icon_resources":[(0, "ui/icon.ico")]
}
],
data_files = data_files,
options = OPTIONS,
# 默认生成一个 library.zip 用来存放打包数据。如果设置为None,则打包数据存放在exe文件里
zipfile = None,
)
print("打包结束,按任意键退出..")
msvcrt.getch()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# python
# py2exe打包
# py2exe
# python3.5
# 用PyInstaller把Python代码打包成单个独立的exe可执行文件
# 使用PyInstaller将python转成可执行文件exe笔记
# 通过Py2exe将自己的python程序打包成.exe/.app的方法
# python学习笔记--将python源文件打包成exe文件(pyinstaller)
# 使用python编写简单的小程序编译成exe跑在win10上
# 解析Python中的eval()、exec()及其相关函数
# python的exec、eval使用分析
# 详解python中executemany和序列的使用方法
# Python之py2exe打包工具详解
# 详解Python3.6的py文件打包生成exe
# 目录下
# 设置为
# 拷贝到
# 会有
# 放在
# 相关内容
# 一句
# 多个
# 说了
# 找不到
# 不多
# 其他的
# 给大家
# 这篇文章
# 报错
# 谢谢大家
# 重装
# 转成
# 配置文件
# 包里
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京网站制作的公司有哪些,北京白云观官方网站?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
如何快速生成橙子建站落地页链接?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel如何使用Vite进行前端资源打包?(配置示例)
EditPlus中的正则表达式实战(5)
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
微信小程序 闭包写法详细介绍
深入理解Android中的xmlns:tools属性
如何在景安服务器上快速搭建个人网站?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Python文本处理实践_日志清洗解析【指导】
再谈Python中的字符串与字符编码(推荐)
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
大连网站制作公司哪家好一点,大连买房网站哪个好?
西安专业网站制作公司有哪些,陕西省建行官方网站?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
详解jQuery中的事件
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
如何做网站制作流程,*游戏网站怎么搭建?
香港服务器选型指南:免备案配置与高效建站方案解析
如何在 React 中条件性地遍历数组并渲染元素
如何用腾讯建站主机快速创建免费网站?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Windows Hello人脸识别突然无法使用
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
昵图网官网入口 昵图网素材平台官方入口
创业网站制作流程,创业网站可靠吗?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
香港服务器如何优化才能显著提升网站加载速度?
如何打造高效商业网站?建站目的决定转化率
历史网站制作软件,华为如何找回被删除的网站?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制

