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

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

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

    541 引用 • 672 回帖 • 1 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 129 关注
  • GitLab

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

    46 引用 • 72 回帖
  • 锤子科技

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

    4 引用 • 31 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖 • 1 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 2 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 18 关注
  • abitmean

    有点意思就行了

    30 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 209 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    490 引用 • 916 回帖 • 2 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 139 关注
  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖 • 1 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 465 关注
  • SQLite

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

    5 引用 • 7 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 561 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 101 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 3 关注
  • Shell

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

    122 引用 • 73 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 347 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 2 关注
  • MySQL

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

    677 引用 • 535 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 489 关注