【Python】使用pyinstaller打包Python程序为EXE可执行程序

2023-05-16

1.说明

我们写出来的Python代码需要配合解释器才能执行,并不能像C、Java等语言一样编译成可执行程序,所以在没有安装Python环境的电脑上就不方便运行py代码,为了解决这个问题,我们可以借助pyinstaller、cx_Freeze、nuitka等工具对Python代码打包,它们的优缺点可以自行百度,我这里介绍一下pyinstaller的用法

2.安装pyinstaller

使用pip安装就行,个人建议在一个新的干净的虚拟环境操作

pip install pyinstaller

3.打包命令

最简单的命令是pyinstaller py文件,在cmd或终端执行一下就能打包了,但有很多参数我们可以留意一下

选项说明
-h帮助说明
-v当前版本
-D打包到一个文件夹(默认)
-F打包到一个文件,不推荐,除非你的代码没有引用自定义模块
-w程序运行时隐藏cmd窗口(针对Windows)
-c程序运行时显示cmd窗口(针对Windows)(默认)
-n生成的可执行文件名,默认与代码文件同名
-i可执行程序的图标,window系统用ico文件,Mac系统用icns文件
–distpath打包后保存的路径,默认是./dist
–workpath打包时工作路径,默认是./build
–specpathspec文件的路径,默认是当前文件夹
–clean自动清理缓存文件
–upx-dirupx程序路径,如果有的话
–add-data SRC;DEST非二进制文件打包路径,Windows系统用分号分隔,类Unix系统用冒号分割
–add-binary SRC;DEST二进制文件打包路径,Windows系统用分号分隔,类Unix系统用冒号分割
–log-level打包时的日志等级

4.命令举例

全部参数使用默认设置

pyinstaller main.py

打包为单个可执行程并隐藏控制台

pyinstaller -F -w "E:\python_test_project\main.py"

指定可执行文件的图标

pyinstaller -F -w -i E:\python_test_project\images\test_ico.ico E:\python_test_project\main.py

使用upx进行压缩并且添加文件

pyinstaller -F -w --clean --upx-dir "D:\UPX" E:\python_test_project\main.py

添加文件夹到程序里

pyinstaller -D -w --add-data "E:\repository\python_downloader\utils;.\utils" "E:\python_test_project\main.py"

5.踩坑经验

1.被卫士类软件拦截
尽量退出360等软件,不然涉及到dll操作可能会被拦截导致打包失败,甚至可能直接当成病毒处理了。
2.打包处理的程序很大
如果打包出来的程序很大,考虑一下是不是自己的Python环境安装了太多的库,pyinstaller可能会把用不到的库也打包进去,解决方法是新建一个干净的虚拟环境,只安装用得到的库就行。
3.路径错误
如果你的项目并不只有一个.py文件,即存在自定义模块,那就不要使用-F参数打包成单一的可执行程序,否则可能会因为路径问题导致不能正常工作。另外工作路径尽量不要出现中文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python】使用pyinstaller打包Python程序为EXE可执行程序 的相关文章

  • EFR32FG14 使用定时器TIMER做毫秒级定时

    EFR32FG14 使用定时器TIMER做毫秒级定时 1 添加头文件 span class token macro property span class token directive keyword include span span
  • EFR32FG14 UART的使用方法

    EFR32FG14 UART的使用方法 1 初始化串口 xff08 PA0 gt TX PA1 gt RX xff09 span class token keyword void span span class token function
  • EFR32解锁方法

    EFR32锁住的解锁方法 在某些情况下 xff0c 芯片可能会被锁住 xff0c 导致J LINK等工具连接不上 xff0c 可以参考如下方法 xff1a 1 进入commander exe所在的目录 xff1b 按住Shift 43 右键
  • TFT1.44寸屏ST7735S屏幕使用-stm32f103c8t6

    TFT1 44寸屏ST7735S屏幕使用 stm32f103c8t6 K xff1a 背景灯 RESET xff1a tft复位 RS xff1a 控制线 xff08 数据或者命令 xff09 SDA xff1a 数据线 xff08 SPI
  • 8421拨码器 R7H3-16 的使用

    8421拨码器 R7H3 16 的使用 使用方法极其简单 xff0c 1 2 4 8脚分解与单片机的4个IO脚连接 xff0c IO配置为输入即可 0代表低电平 xff0c 1代表高电平 档位 脚位124801111101112101130
  • Ubuntu 18 上不了网解决方法

    Ubuntu 18 出现网络异常 1 打开命令行 Ctrl 43 Alt 43 t 2 关闭网络 sudo service network manager stop 3 删除网络 sudo rm var lib NetworkManager
  • GPIO引脚 模拟 IIC(软件IIC)

    GPIO引脚 模拟 IIC 软件IIC IIC总线在传输数据的过程中一共有三种类型信号 xff0c 分别为 xff1a 开始信号 结束信号和应答信号 IIC总线的时序图 xff1a 空闲状态 当IIC总线的数据线SDA和时钟线SCL两条信号
  • ESP32/ESP8266 MQTT协议接入阿里云(一)

    ESP32 ESP8266 MQTT协议接入阿里云 xff08 一 xff09 1 搭建阿里云环境 xff08 1 xff09 跳转连接 xff1a https iot console aliyun com lk summary new x
  • ESP32/ESP8266 MQTT协议接入阿里云(二)

    ESP32 ESP8266 MQTT协议接入阿里云 xff08 二 xff09 1 在连接阿里云之前 xff0c 需要先了解MQTT的连接协议 CONNECT 协议格式 xff1a 固定包头 43 可变包头 43 有效载体 xff08 1
  • https是如何验证证书的有效性的

    证书验证的过程是使用非对称加密的 xff0c 客户端对服务器端发起请求 xff0c 服务器返回一个证书 xff0c 客户端验证这个证书的合法性 xff0c 如果这个证书是合法的 xff0c 那么就生成一个随机值 xff0c 利用这个随机值作
  • Kali Linux 更新源

    vi etc apt source list 添加下列更新源 中科大 deb http mirrors ustc edu cn kali kali rolling main non free contrib deb src http mir
  • 安装所有Kali 工具包

    apt get kali linux all
  • 路由选路三原则

    路由选路的三原则 最长掩码匹配原则AD值 Administrative Distance 通告距离 路由类型AD值Connect0Static1EIGRP Summary5EBGP20EIGRP 内部90OSPF110RIP120EIGRP
  • OSPF7种状态

  • CentOS 7 由原来的root@localhost~# 变成了-bash-4.2#

    发生这种原因可能是 root 目录下缺少了几个配置 bashrc 和 bash profile 进入 etc skel 目录下 将 bashrc 和 bash profile复制到 root 目录下 1 cp etc skel bashrc
  • Kali 中 dnsdict6 安装过程

    更新下载源 文件目录 etc apt source list 增加源deb http mirrors ustc edu cn kali kali rolling main non free contrib deb src http mirr
  • 在CentOS 7上搭建代理服务器(Socks 5)

    安装环境配置 1 yum install gcc 2 yum install openldap devel 3 yum install pam devel 4 yum install openssl devel 安装Socks 5 wget
  • Archlinux 安装教程 - 附详细图文(一)

    博主声明 xff1a 转载请在开头附加本文链接及作者信息 xff0c 并标记为转载 本文由博主 威威喵 原创 xff0c 请多支持与指教 本文首发于此 博主 xff1a 威威喵 博客主页 xff1a https blog csdn net
  • C语言实战——生产者消费者问题

    C语言实战 生产者消费者问题 方法摘要 生产者消费者共享缓冲区 xff0c 生产者向缓冲区中放数据 xff0c 消费者从缓冲取中取数据 xff0c 当缓冲区中被放满时 xff0c 生产者进程就必须进入挂起状态 xff0c 直到消费者从缓冲中
  • archlinux/manjaro 安装wps-office

    安装 需要添加AUR库并且安装好yay span class token function sudo span pacman s yay 从AUR安装 yay S wps office mui zh cn wps office mime c

随机推荐