python打包exe,打包好后,启动exe报错找不到paddleocr

目录

1、安装pyinstaller

2、生成脚本文件的.spce文件

 3、资源文件配置

4、生成exe文件

5、使用了paddleocr启动exe后报错

6、配置.spce文件

7、重新生成exe文件

8、关于图片找不到的问题


参考:PaddleOCR打包exe--Pyinstaller_paddleocr 打包exe_mjiansun的博客-CSDN博客

 打包好后启动exe报错如图所示:

从头开始讲起。

1、安装pyinstaller

打包需要使用到pyinstaller,需要用pip安装

pip install pyinstaller

2、生成脚本文件的.spce文件

安装好以后,在cmd窗口输入以下命令,生成脚本文件的.spce文件

pyi-makespec script.py

生成后可以看到.py文件同目录下存在一个同名的.spce文件,双击打开后可以看到内容如下:

 

参数的含义如下:

Analysis主要接收一系列的脚本名作为输入,它会分析所有导入的模块以及其他依赖等。Analysis类中的pathex定义了打包的主目录,对于在此目录下的py文件可以只写文件名不写路径。

PYZ会生成所有相关pyz文件并进行归档,最终会打包进可执行文件中

EXE会在分析好的脚本以及pyz文件基础上生成可执行文件。其中,Console=False代表程序运行时不带CMD窗口。

COLLECT文件夹模式下,COLLECT会创建用于存放各文件的文件夹。而单文件模式下,COLLECT不会被用到,EXE会直接接收所有的脚本,模块以及二进制文件。所以,如果是-F参数(单文件)生成的spec文件是不会有这个类的。

Analysis.datas这可以设置在打包后的程序中添加资源文件。比如:datas=[(‘./a.txt’, ‘.’),(‘./b.jpg’, ‘.’)],这个就是将打包时工作目录中的a.txt文件和b.jpg作为资源文件,最后复制到打包后的目录下。如果还有其它资源文件,则继续添加元组。

Analysis. hiddenimports这个可以设置打包程序时要导入的库的名称。如:hiddenimports=[‘pandas’, ‘numpy’]

Analysis. excludes:这个可以设置打包程序时不要导入的库的名称。如:excludes=[‘pandas’, ‘numpy’]

EXE. exclude_binaries设置打包模式,True:文件夹模式;False:单文件模式。

EXE.upx设置是否使用upx压缩。

EXE.upx_excludeupx压缩时跳过压缩项。比如upx_exclude =[‘vcruntime140.dll’] 则代表压缩时不压缩vcruntime140.dll动态库。

EXE.console设置是否在运行程序时显示cmd窗口。True代表显示,False代表不显示。建议第一次打包时带上。如果运行出现什么问题,可以在cmd窗口中显示。

EXE. icon设置程序的图标。

 3、资源文件配置

如果没有使用到图片资源等,就可以直接使用命令生成exe了,如果使用了图片资源则在.spce的datas=[]中添加资源文件名字。在这里,我使用了一个文件夹存放使用到的所有图片,就可以这样写:

datas=[('res','res')],

4、生成exe文件

在cmd中输入以下命令,等待一段时间看到输出的成功完成就可以了

pyinstaller script.spec

打包好后会生成两个文件夹,分别是build和dist,exe就在dist里面,build可以直接删除我们使用不到。

进入dist可以看到以下文件,“_internal”就是打包好所需的环境:

启动.exe就可以使用了

5、使用了paddleocr启动exe后报错

如果在脚本中使用了paddleocr启动exe后可能会报错,需要配置.spce配置文件如图所示:

 

6、配置.spce文件

在pathex和binaries中填写虚拟环境或者其他python路径下的paddleocr与paddle\\libs:

pathex=['xxxx\\Python\\Python39\\Lib\\site-packages\\paddleocr',	' xxxx \Python\\Python39\\Lib\\site-packages\\paddle\\libs'],
binaries=[('xxxx\\Python\\Python39\\Lib\\site-packages\\paddleocr','.'),	('xxxx\\Python\\Python39\\Lib\\site-packages\\paddle\\libs','.')],

7、重新生成exe文件

保存后再执行pyinstaller script.spec,双击exe就可以正常运行了。

下面是我的脚本:

8、关于图片找不到的问题

使用的图片可能找不到,其实图片已经打包到_internal文件夹下了,把exe文件放到_internal文件下,或把资源文件夹放到与exe同级就可以了,如图:

相关推荐

  1. Python打包exe文件】

    2023-12-05 19:16:06       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 19:16:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 19:16:06       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 19:16:06       82 阅读
  4. Python语言-面向对象

    2023-12-05 19:16:06       91 阅读

热门阅读

  1. 在CentOS 8.2中安装Percona Xtrabackup 8.0.x备份MySql

    2023-12-05 19:16:06       54 阅读
  2. AtCoder Beginner Contest 331

    2023-12-05 19:16:06       67 阅读
  3. k8s中dubbo配置与实现

    2023-12-05 19:16:06       60 阅读
  4. TCP/IP

    TCP/IP

    2023-12-05 19:16:06      56 阅读
  5. 内网环境安装K8S1.20.11版本集群

    2023-12-05 19:16:06       39 阅读
  6. Porthopper服务测试程序编程

    2023-12-05 19:16:06       58 阅读
  7. Android adb:“more than one device/emulator“解决办法

    2023-12-05 19:16:06       58 阅读
  8. 11. Mysql 子查询

    2023-12-05 19:16:06       63 阅读