python 文件封装成 *.exe 文件(单文件和多文件)

本贴最后更新于 1752 天前,其中的信息可能已经时移世改

环境:win10 64 位 python3.7

.py 文件打包*
Python GUI:程序打包为 exe

一、安装 Pyinstaller,命令 pip install Pyinstaller,(大写的 P,敲黑板,要考)
二、打包 exe 步骤:

cmd 进入 py 程序项目目录,执行命令:pyinstaller -F -w --icon=xxx.ico main.py --noconsole。其中,-F 表示生成单 exe 可执行文件,-w 表示窗体程序,
--icon 是设置 exe 的显示图标,'main.py'是程序的入口,--noconsole 表示不展示 cmd 窗口,反过来想看 cmd 窗口就改成--console。*.ico 文件可以到网上 ico 矢量图在线转换工具处理
http://www.faviconico.org/

一阵刷屏之后,终于打出成功的提示:

程序目录下多了几个文件夹:一个 spec 文件,build 文件夹,一个 dist 文件夹,其中的 dist 文件夹内就是我们生成的 exe 应用程序:

FATAL ERROR:
执行之,应该能看到程序界面,可是......弹出的却是个错误框:Failed to execute script pyi_rth_qt5plugins

这个错误的原因在于 pyinstaller 找不到 PyQt 库,通过网上封装好的 pyqt 安装程序包安装的,则不会出现这个问题,而我们是通过 pip 安装的,
没有将 pyqt 的路径加入环境变量。
解决办法是在打包命令中加入 paths 参数:pyinstaller --paths C:Users......Python35-32/Lib/site-packages/PyQt5/Qt/bin -F -w --icon=roman.ico main.py 或者设置下环境变量。这时,再看下生成的 exe,文件大小已经由 8.5M 增大到 14.5M 了,再次执行之,ok,看到了我们的界面,而且功能也是 ok 的,

多文件打包:

多文件打包参考:https://blog.csdn.net/CholenMine/article/details/80964272

命令格式如下,下命令为一条命令,为方便显示做了分行处理:

pyinstaller [主文件] -p [其他文件 1] -p [其他文件 2]
--hidden-import [自建模块 1]
--hidden-import [自建模块 2]

以上为一整条命令

pyinstaller main.py -p mysql.py -p other.py --hidden-import mysql --hidden-import other

在目录结构:“程序根目录\dist\main\” 下可以找到生成的 main.exe。将其他依赖文件拷贝进入“程序根目录\dist\main\” 下,即可运行


项目 XXX 举例,main 和 ico 文件要放一起 -p 文件夹,因为项目下我创建了 case、autodriver、data、page 文件夹,文件夹里面放的*.py 文件通过--hiddent-import 指向,代码如下:
pyinstaller -F -i t.ico -w main.py -p case -p autodriver -p data -p page -p page --hidden-import workday.py --hidden-import auto_driver.py --hidden-import login.csv --hidden-import base_page.py --hiddent-import sub_page.py
注意:--hiddent-import 是连在一起的,dist 文件夹里面要把需要的问卷 copy 进来,然后整个 dist 文件夹就可以任意移动到其他位置,到时候运行*.exe 文件就可以执行程序了

逆风的方向更适合飞翔,不怕千万人阻挡,只怕自己投降!

文章二

最近写了一个小小的程序,需要进行封装 exe,为了简单,就直接用了 pyinstaller 这个模块,对于 python3.6 版本的童鞋来说,简直方便的不要。下面就给大家介绍一下如何用 pyinstaller 去封装程序为 exe 程序。

首先,需要安装一下 pip 这个应用,这个已经在前面的文章中说过了,windows 和 linux 都有请借鉴 windows 和 linux。

第二步,安装好 pip 之后,在 cmd 命令窗口中输入 pip install pyinstaller 即能安装上 pyinstaller,那么接下来要介绍一下关于 pyinstaller 几个指令了:
-w 指令
直接发布的 exe 应用带命令行调试窗口,在指令内加入-w 命令可以屏蔽;
-F 指令
注意指令区分大小写。这里是大写。使用-F 指令可以把应用打包成一个独立的 exe 文件,否则是一个带各种 dll 和依赖文件的文件夹;
-p 指令
这个指令后面可以增加 pyinstaller 搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试,site-packages 目录下都是可以被识别的,不需要再手动添加。
那么通常是使用-F 指令,使用的语法是:pyinstaller -F (python 程序名称).py
以“helloword”为例

在一个新建的文件夹下把 python 程序放进去,然后点击空白处,按住 shift+ 鼠标右击,点击“在此处打开命令行窗口”,在 cmd 命令中输入“pyinstaller -F hello.py”

在回车之后,则会出现以下画面

以上证明已经封装好 exe 程序了,在新建的文件夹中,会出现以下的文件

封装好的 exe 程序就在 dist 文件夹中,如图所示:

倘若你的 windows 是正版的话就会出现“hello world”的字样,如果不是正版的将会出现没有 dll 文件支持,那么就需要进行正版的系统安装了。

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖 • 1 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    85 引用 • 122 回帖 • 617 关注
  • 倾城之链
    23 引用 • 66 回帖 • 120 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    26 引用 • 222 回帖 • 166 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 22 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    207 引用 • 2031 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    86 引用 • 897 回帖
  • 笔记

    好记性不如烂笔头。

    306 引用 • 782 回帖
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 430 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 195 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 65 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 140 关注
  • 创业

    你比 99% 的人都优秀么?

    83 引用 • 1398 回帖 • 1 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 55 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 149 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    207 引用 • 358 回帖 • 1 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注