python 生成exe

一:准备工作

pip install pyinstaller

下载安装pywin32
链接 (64位)
提取码: 6qnp

二:一个py文件的打包

pyinstaller -F -w D:\test\test.py

Ps:-w 表示不显示控制台

自定义图标

pyinstaller -F -w -i D:\test\test.ico D:\test\test.py

三:多个py文件的打包

surface.py是入口文件

pyinstaller surface.py -p cn.py -p ocr.py --hidden-import cv2 --hidden-import cnocr --hidden-import PIL --hidden-import pytesseract --hidden-import tkinter 

打包过程我遇到的问题:

1.UnicodeDecodeError

解决办法:

命令行中先输入chcp 65001 后再进行打包

2.Cannot find existing PyQt5 plugin directories

解决办法:

在报错信息给的路径下给它想要的文件

在这里插入图片描述
Paths checked —我们新建F:/python/Library/plugins

然后把所需文件从PyQt5里复制出来

Anaconda3\pkgs\pyqt-5.9.2-py37h6538335_2\Library\plugins

python 生成exe_第1张图片

把这个ddl 文件拷出来就行了

python 生成exe_第2张图片
程序最后这样显示,没有报错信息那就是打包成功了

打包后的程序就在新生成的dist文件夹里

但是我在运行exe的时候又报错了

Ps:我保留了控制台,可以看报错信息

python 生成exe_第3张图片

Cannot find the MXNet library 然后后面还给了缺失文件的路径

则,我们在程序目录下新建mxnet文件夹,再把所需的文件放进去

python 生成exe_第4张图片
这6个dll 文件

拷贝出来后,程序正常运行了

Ps:这样打包出来的文件太大了!

python 生成exe_第5张图片

有很多这样的dll 文件动不动几十M

其实这是把不必要的一些包也给打包起来了

解决方法:

虚拟一个新的纯洁python环境,只安装了我们打包所需要的的库的一个环境

使用pipenv

pip install pipenv

当你想要打包的目录下

pipenv install --python 3.7
pipenv shell

在这里插入图片描述

这样就算是进入到"虚拟python环境"里了

你可以使用 pip list 查看当前安装的库,你会发现很纯净

然后,你开始pip 安装你程序需要用到的包

然后

pyinstaller surface.py -p cn.py -p ocr.py --hidden-import cv2 --hidden-import cnocr --hidden-import PIL --hidden-import pytesseract --hidden-import tkinter

参数解释:

第一个surface.py 为程序入口

后面的-p 为其他的多文件

–hidden-import 为你需要用到的包

开始自动打包,最终程序也是在dist文件夹里

如果出现报错,注意看报错信息


我遇到过一个问题,弹出一个窗口说:

无法找到程序入口 无法定位程序输入点

(当时以为程序还能运行就没管,然后跳出很多报错信息)

我拼命搞那些报错信息没用!

根源就出在那个最先弹出窗口说的:无法找到程序入口!

根据它提示的问题文件,我给替换了

python 生成exe_第6张图片

(原因是安装pywin32后,这个文件好像会发生变化,因为这个东西我之前一直没遇到过,直到开始打包exe,就有了)

python 生成exe_第7张图片

反正我就把最大的541KB的那个文件给替换到SYSTEM32 里了

你可能感兴趣的:(Python)