持续创作,加速成长!这是我参与「日新计划 10 月更文挑战」的第7天,点击检查活动详情

1 pyinstaller的装置与简略运用

1.1 pyinstaller的装置

1、装置方法一:运用pip装置

pip install pyinstaller

2、装置方法二:从pyinstaller官网下载源码装置(参阅)

  • pyinstaller官网:http://www.pyinstaller.org/

下载源码后进行解压,然后履行:

python setup.py install

1.2 pyinstaller对单个py文件进行打包成exe文件

1、首先来看一下打包的程序目录:

python使用pyinstaller把程序进行打包

2、test.py程序功用:运用tkinter创立一个窗口,把images/zly.png图片显现在窗口中。程序如下:

import cv2
import numpy as np
from PIL import Image, ImageTk
import tkinter as tk
window = tk.Tk()
window.title('demo')
window.geometry('600x400')
image = cv2.imread('images/zly.png')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image, (500, 200))
image_pil = Image.fromarray(np.uint8(image))
canvas = tk.Canvas(window, width=500, height=200, bg='green')
image_file = ImageTk.PhotoImage(image=image_pil)
# 报错:AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'  参数关键字是image,我写成Image所以报该过错,找半天!
image = canvas.create_image(500/2, 0, anchor='n', image=image_file)  # 图片的锚定点anchor(这儿就是值图画的上边缘的中间方位),放到画布的(x=0, y=0)的方位
canvas.pack(side='top')
window.mainloop()

3、pyinstaller -F对程序进行打包

pyinstaller -F test.py

打包后程序目录如下:

  • xxx.spec:是记载打包的参数文件(打包好之后能够删去)
  • build目录:打包过程中生成的文件(打包好之后能够删去)
  • dist目录:打包生成的exe可履行文件存储在该目录下

python使用pyinstaller把程序进行打包

4、这样就能够把该履行文件拷贝给其他人运用了,而其他人不需求再装置python编译器以及程序相关的python依靠库包。如下我把生成的可履行文件拷贝到桌面:

C:\Users\Administrator\Desktop\dist>tree /F
C:.
│  test.exe     # 277MB
│
└─images
        zly.png
C:\Users\Administrator\Desktop\dist>

留意:

程序中会读取images/zly.png科履行文件,所以当时可履行文件会在当时目录下找,因而需求把images目录拷贝到dist目录下。还有最好用相对途径,绝对途径拷贝到其他电脑由于途径问题可能会出问题!

能够看到,咱们只打包一个简略的程序,打包出的exe文件就有277MB,这是由于程序会把python解说器,pillow、tkinter、numpy等依靠库包都打包到exe文件中,因而这也是运用pyinstaller打包exe程序比较臃肿的原因

到这儿,你已经知道怎样运用pyinstaller打包一个py文件为可履行的exe文件啦,下面介绍pyinstaller的更多参数运用!

2 pyinstaller的更多参数运用

2.1 pyinstaller常用的参数

1、pyinstaller常用的参数

  • -F:表明生成单个可履行文件,会把生成的exe可履行文件存放到dist目录下!

  • w: 表明去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删去吧!

  • p: 表明你自己自定义需求加载的类途径,一般情况下用不到。设置 Python 导入模块的途径(和设置 PYTHONPATH 环境变量的作用类似)。也可运用途径分隔符(Windows 运用分号,Linux 运用冒号)来分隔多个路。

  • i: 表明可履行文件的图标,就是xxx.ico类型的图片,怎么生成ico图片能够:参阅

2、pyinstaller更多参数能够运用-h检查

pyinstaller -h

3 pyinstaller常见生成exe文件常见过错

3.1 pyinstaller打包py文件的时分找不到libiomp5md.dll文件

1、在运用:pyinstaller -F test.py生成可履行文件时报错:Unable to find "C:\software_install\Anaconda_install\Library\bin\libiomp5md.dll" when adding binary and data files.

python使用pyinstaller把程序进行打包

2、大局查找一下libiomp5md.dll文件,会发现在Library\bin目录下有这个文件的,只不过名字被我改为libiomp5md_bak.dll(之前遇到了一个什么过错,需求删去该目录下的这个文件,所以我备份了一下),只需求把备份的文件名改回libiomp5md.dll即可处理上面的问题!

python使用pyinstaller把程序进行打包

3.2 pyinstall打包的时分报enum相关过错

1、在运用:pyinstaller -F test.py生成可履行文件时报错:AttributeError: module 'enum' has no attribute 'IntFlag'

2、处理方法:从python 3.6开始,enum34库不再与规范库兼容。该库也是不必要的,所以直接卸载即可:

pip uninstall enum34

参阅:cpython.blog.csdn.net/article/det… 参阅:blog.csdn.net/MaXiaoTianc…