全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python学习教程之使用py2exe打包

前言

本文主要给大家介绍了关于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  # 目录下  # 设置为  # 拷贝到  # 会有  # 放在  # 相关内容  # 一句  # 多个  # 说了  # 找不到  # 不多  # 其他的  # 给大家  # 这篇文章  # 报错  # 谢谢大家  # 重装  # 转成  # 配置文件  # 包里 


相关文章: 小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  深入理解Android中的xmlns:tools属性  建站VPS配置与SEO优化指南:关键词排名提升策略  如何登录建站主机?访问步骤全解析  宁波免费建站如何选择可靠模板与平台?  如何通过远程VPS快速搭建个人网站?  如何在阿里云虚拟主机上快速搭建个人网站?  如何用PHP快速搭建CMS系统?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在宝塔面板中修改默认建站目录?  如何高效配置IIS服务器搭建网站?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何快速查询域名建站关键信息?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  网站制作价目表怎么做,珍爱网婚介费用多少?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何快速搭建响应式可视化网站?  如何快速生成可下载的建站源码工具?  如何通过主机屋免费建站教程十分钟搭建网站?  如何选择PHP开源工具快速搭建网站?  如何自定义建站之星模板颜色并下载新样式?  如何快速重置建站主机并恢复默认配置?  c# 服务器GC和工作站GC的区别和设置  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何在橙子建站上传落地页?操作指南详解  建站之星伪静态规则如何设置?  C++时间戳转换成日期时间的步骤和示例代码  招贴海报怎么做,什么是海报招贴?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  广平建站公司哪家专业可靠?如何选择?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站主机无法访问?如何排查域名与服务器问题  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  怎么将XML数据可视化 D3.js加载XML  免费视频制作网站,更新又快又好的免费电影网站?  微信小程序 input输入框控件详解及实例(多种示例)  贸易公司网站制作流程,出口贸易网站设计怎么做?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何打造高效商业网站?建站目的决定转化率  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星展会模板:智能建站与自助搭建高效解决方案  南宁网站建设制作定制,南宁网站建设可以定制吗?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  宝塔面板如何快速创建新站点? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。