pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行。这个程序完全跨平台,包括Windows、Linux、Mac OS X等多个操作系统下运行。因为我用的是win7,以下直接使用windows打包讲解,不同平台上使用 PyInstaller方法是一样的,它们支持的选项也是一样的。

安装Pyinstaller

Python默认不包含Pyinstaller模块,因此需要自行安装

与安装其它Python模块一样,使用pip命令安装即可,一条搞定:

pip install pyinstaller

运行上面命令,可以看到如下输出结果,表示成功:

Successfully installed altgraph-0.17 pefile-2021.5.24 pyinstaller-4.5.1 pyinstaller....

使用Pyinstaller

Pyinstaller 工具使用的命令语法如下:

pyinstaller 选项 python源文件

实际工作中常用的命令也就几条:

## -D(默认选项),生成build、dist目录,该选项生成一个目录(包含多个文件)来作为程序
pyinstall -D app.py ## 使用-F选项,在dist目录下生成单独的EXE文件(在Mac生成的文件没有exe后缀)
pyinstaller -F app.py ## -w不显示GUI窗口,-i指定图标
pyinstaller -F -w -i app.ico app.py

如果想给软件添加自己喜欢的图标,这里推荐以下方式

https://www.iconfont.cn/     			####免费的在线icon图标网站
http://www.favicon-icon-generator.com/ ###免费在线生成1
http://www.ico51.cn/ ####免费在线生成2

常用参数说明

-h,--help 查看该模块的帮助信息
-F,-onefile 产生单个的可执行文件
-D,--onedir 产生一个目录(包含多个文件)作为可执行程序
-a,--ascii 不包含 Unicode 字符集支持
-d,--debug 产生 debug 版本的可执行文件
-w,--windowed,--noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,--nowindowed,--console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,--out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,--path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME,--name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

以上只是Pyinstaller模块所支持的常用选项,如需了解更多可通过pyinstaller -h来查看。

实践一下

这里简单写一个demo,我们来进行打包测试

为了不让界面执行完立即退出,使用input()让界面暂时停留

print("钢铁侠的知识库")
input()

使用命令进行打包:

pyinstaller -F test.py

打包成功后会在dist下找到test.exe文件,执行即可看到

以上即表示打包成功。

---- 钢铁 648403020@qq.com 2021.08.07

参考鸣谢

http://c.biancheng.net/view/2690.html

https://blog.csdn.net/xiaomu_347/article/details/108761161

https://medium.com/pyladies-taiwan/python-將python打包成exe檔-32a4bacbe351

python打包exe之pyinstaller用法的更多相关文章

  1. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  2. python打包exe pyinstaller 简单使用

    源由 最近公司让做了一个小工具,使用python写的,写完之后要求能放在其它电脑上运行,于是就开始寻找方案; 按网上的说法 py2exe已经很久没更新了,资料也不多: 于是就采用pyinstaller ...

  3. Python文件打包exe教程——Pyinstaller(亲测有效)

    今天将要解决一个问题,如何打包Pyhon文件 众所周知,Python文件的后缀名为“.py” 所以执行Python文件的要求之一便是具有python环境. 偶尔特殊情况,或者运行一些比较简单的工具,但 ...

  4. python 打包exe

    下载及安装:pip install pyinstaller 执行命令: pyinstaller -F xxx.py pyinstaller --onefile meng.py 可以运行的exe文件位于 ...

  5. 解决Python打包exe控制台无法粘贴问题

    使用pyinstaller打包生成可执行exe文件后,发现启用input()接受键盘输入时窗口无法粘贴也无法右键,找了好久终于找到问题所在: 一是通过右键单击控制台主题边框在弹出的菜单中选择编辑.粘贴 ...

  6. python 打包exe注意的问题

    教程百度.谷歌都有,本文讲讲安装时出错的问题. 教程:http://keliang.blog.51cto.com/3359430/661884 1.cxfreeze 找不到路径时: 需要修改Scrip ...

  7. python打包exe文件-ImportError: No module named 'queue'

    我之前遇到的一个错误就是 File "site-packages\urllib3\packages\six.py", line 92, in __get__ File " ...

  8. python打包exe

    https://www.imooc.com/article/246868 虽然在3.7下报错了,但是先码

  9. python打包exe文件

    https://blog.csdn.net/lqzdreamer/article/details/77917493 测试下载pyinstall,在安装运行就可以了

随机推荐

  1. 使用axios模拟表单提交

    1.需求背景 最近在实验室写一个Spring前后端分离的项目,项目中使用Spring Security组件实现系统的认证和授权,当Security的认证模式设置为FormLogin时(如下代码),前端 ...

  2. 玩转STM32MP157- 在应用层中使用 fbtft

    fbtft使用的是framebuffer框架,这种框架将显示设备抽象为帧缓冲区,对framebuffer设备(/dev/fbx(0.1.2..))进行相关操作可以反应到LCD上. 现在尝试下在用户空间 ...

  3. Lc_704二分查找

    package com.example.leetcode2; import java.util.*; /** * @description: 704. 二分查找 * 给定一个 n 个元素有序的(升序) ...

  4. 分布式AKF拆分原则

    1. 前言 当我们需要分布式系统提供更强的性能时,该怎样扩展系统呢?什么时候该加机器?什么时候该重构代码?扩容时,究竟该选择哈希算法还是最小连接数算法,才能有效提升性能? 在面对 Scalabilit ...

  5. MyBatis温故而知新-底层运行原理

    准备工作 public class MainClass { public static void main(String[] args) throws Exception { String resou ...

  6. jce-jdk13-120.jar

    jce-jdk13-120.jar https://files.cnblogs.com/files/blogs/692137/jce-jdk13-120.rar

  7. 暑假自学java第十二天

    1, 创建String 字符串 Java 中的字符串是一连串的字符,与其他计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理.将字符串作为内置的对象处理,允许Jav ...

  8. 资源:mysql下载路径

    mysql的下载路劲 https://dev.mysql.com/downloads/mysql/

  9. linux--------find命令之xargs

    p.p1 { margin: 0; font: 18px "Hannotate SC"; color: rgba(4, 51, 255, 1); -webkit-text-stro ...

  10. mybatis复杂映射

    1. 类型名对应 当实体类与表中字段完全一致时,mapper文件里返回类型用resultType,否则要用resultMap,并且建立resultMap映射 package com.rf.domain ...