无法提取 PyInstaller .exe 文件插件(使用 Keras 和 ONNX 转换器库和模块)

PyInstaller .exe file plugin could not be extracted (with Keras and ONNX converter libraries and modules)

我有一个 python 脚本,它采用 ONNX 神经网络并将其转换为 keras (.h5) 模型进行训练并导出回 ONNX 作为稍后部署的新训练模型。问题是我需要从 python 脚本创建一个 python .exe 文件,因为目标是在 C Plus Plus 中部署深度学习模型。目前,Python 脚本在为 C Plus Plus 程序更改 onnx 程序以部署经过训练的模型方面做得很好,并且 成功地使用 Pyinstaller 创建了一个 .exe 文件以下命令:

pyinstaller --onefile Material_Classifier.py

但是,问题是当我在文件资源管理器中单击 .exe 文件时,控制台呈现空白大约半分钟,然后停止工作。当我使用 cmd 时,出现以下错误:

Failed to decode wchar_t from UTF-8
MultiByteToWideChar: The data area passed to a system call is too small.
share\jupyter\lab\staging\node_modules\.cache\terser-webpack-plugin\content-v2\sha512e\ba\cfce62ec1f408830c0335f2b46219d58ee5b068473e7328690e542d2f92f2058865c600d845a2e404e282645529eb0322aa4429a84e189eb6b58c1b97c1a could not be extracted!
fopen: No such file or directory

我的第一个预感是我的输入 ONNX 文件夹与 .exe 文件不在同一个文件夹中,因为脚本需要它进行输入,但这对修复 .exe 文件没有任何作用。现在,我倾向于 PyInstaller 可能不喜欢我在脚本中使用的以下一些库:

import os
import onnx
import keras
import keras2onnx
from onnx2keras import onnx_to_keras

import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.layers import Input
from tensorflow.keras.models import Model

from tensorflow.python.keras.models import load_model

import cv2
from tqdm import tqdm
import pickle

我的第二个预感是,因为 我的程序需要一个外部文件并输出一个新文件,所以我需要在使用 Pyinstaller 创建 .exe 之前以某种方式指定它。 但是我目前无从知晓。

TLDR;我想知道 PyInstaller 是否在处理深度学习库时遇到问题,如果我做错了什么,以及是否有任何替代方法可以从 python 深度学习脚本创建 .exe 文件。谢谢!

回答我自己的问题,

此过程与 PyInstaller 在创建 .exe 可执行文件时无法使用 Anaconda 环境有关。卸载 Anaconda 并重新安装 Python 3.7.x 时,将 tensorflow、onnx 和 onnx.dist 文件夹复制到与我的脚本,然后写

pyinstaller --onefile --add-data C:\path\to\onnx;onnx. --add-data C:\path\to\tensorflow;tensorflow. --add-data C:\path\to\onnx-dist;onnx-dist. script.py

不难猜测是缓存文件名过长导致的错误。在大多数实际情况下,进入错误消息中指定的目录并手动将文件名更改为任何较短的文件名就足够了。通常,share 目录位于目录 Anaconda3 中。之后,您需要重建可执行文件并确保不再显示错误信息。