pip install pyinstaller
下载安装pywin32
链接 (64位)
提取码: 6qnp
pyinstaller -F -w D:\test\test.py
Ps:-w 表示不显示控制台
自定义图标
pyinstaller -F -w -i D:\test\test.ico D:\test\test.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
把这个ddl 文件拷出来就行了
打包后的程序就在新生成的dist文件夹里
但是我在运行exe的时候又报错了
Ps:我保留了控制台,可以看报错信息
Cannot find the MXNet library 然后后面还给了缺失文件的路径
则,我们在程序目录下新建mxnet文件夹,再把所需的文件放进去
拷贝出来后,程序正常运行了
Ps:这样打包出来的文件太大了!
有很多这样的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文件夹里
如果出现报错,注意看报错信息
我遇到过一个问题,弹出一个窗口说:
无法找到程序入口 无法定位程序输入点
(当时以为程序还能运行就没管,然后跳出很多报错信息)
我拼命搞那些报错信息没用!
根源就出在那个最先弹出窗口说的:无法找到程序入口!
根据它提示的问题文件,我给替换了
(原因是安装pywin32后,这个文件好像会发生变化,因为这个东西我之前一直没遇到过,直到开始打包exe,就有了)
反正我就把最大的541KB的那个文件给替换到SYSTEM32 里了