第六十五篇 Pyinstaller打包可执行程序exe

心得:事情太多,总得去专心做一件事情,才能把它做好

一、Python文件类型介绍

python作为一门解释型脚本语言,它有三种发布方式:

  1. .py文件 : 源码文件,运行需要使用者安装Python环境并且安装依赖的各种库
  2. .pyc文件:pyc文件是Python解释器可以识别的二进制码,可跨平台的,需要使用者安装相应版本的Python和依赖库。
  3. 可执行文件:不需要安装python环境和依赖库,可针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,…)

二.PyInstaller的原理简介

  1. PyInstaller工具可以把python解析器和脚本打包成一个可执行的文件,并不是编译成真正的机器码,打包成一个可执行文件后运行效率可能会降低,好处就是在使用者的机器上可以不用安装python和你的脚本依赖的库。

  2. 利用PyInstaller对指定的的脚本打包时,会先分析脚本所依赖的其他脚本,然后根据导包路径去查找,把所有相关的脚本收集起来,包括Python解析器,然后根据你的命令参数可分别生成文件夹,或者打包成一个可执行文件。

  3. 无论是生成的文件夹里的可执行文件或者只打包成一个可执行文件都可以直接运行,前者需要把整个文件夹都给别人。

  4. 注意⚠️:PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。

三、安装使用

1.安装

  1. PyInstaller在mac,linux下的安装
    pip install PyInstaller

    使用命令为

    pyinstaller -F hello.py
    

    pyinstaller命令不存在时,需要建立软连接

    ln -s /usr/local/python3.7/sitpackge/pyinstaller /usr/local/bin/pyinstaller
    

    生成的可执行文件在dist路径下

  2. 在windows下安装
    pip install pyinstaller
    pip install pypiwin32

2.使用
在这里插入图片描述
在这里插入图片描述
常用语法:PyInstaller -F -w -i xxx.ico dev.py
-F 指只生成一个exe文件,不生成其他dll文件
-w 不弹出交互窗口,如果你想程序运行的时候,与程序进行交互,则不加该参数
-i 设定程序图标 ,其后面的xxx.ico文件就是程序小图标

3.避坑点

  1. 使用参数-i时,图标的文件格式必须是xxx.ico文件,所以需要把自己的图片转换为ico格式
    转换方法:网页直接找转换工具:http://www.bitbug.net/或着使用python的第三方库
    pillow 来生成ico文件:
from PIL import Image

obj=Image.open("little_pig.jpg")

obj.thumbnail((127,127),Image.BILINEAR) #可调整大小 #极小的东西
obj.save("little_pig.ico")
print(obj.size)

  1. 配合pyQT5打包后程序中存在subprocess等程序时,需要将其参数补齐,否则程序不会生效,示例如下:

未生效代码:

import subprocess

res = subprocess.getoutput("ls -l")

改后代码

import subprocess

res = subprocess.Popen("ls -l", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
res.stdout.read().decode(encoding="utf-8")
res.stdout.close()
  1. 路径最好为英文,没有中文字符
  2. 脚本名称里没有特殊字符,使用utf-8编码
  3. 如果在py文件中用到了多进程,且你在Windows下编译需要加一行代码在开头,multiprocessing.freeze_support()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值