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

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

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

    556 引用 • 675 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 9 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 639 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 182 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 384 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖 • 2 关注
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 2 关注
  • Python

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

    556 引用 • 675 回帖
  • CloudFoundry

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

    5 引用 • 18 回帖 • 181 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 508 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 740 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 7 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 652 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 437 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 35 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 317 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖 • 1 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    411 引用 • 3588 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 166 关注
  • Access
    1 引用 • 3 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 6 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 204 关注