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

在这里插入图片描述

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

在这里插入图片描述
程序最后这样显示,没有报错信息那就是打包成功了

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述
这6个dll 文件

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

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 里了

PS:能只打包一个文件打包一个文件,那样打包出来的exe极小!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值