pyinstaller缺少mxnet dll

时间:2018-11-13 17:27:05

标签: python exe pyinstaller mxnet

我一直在尝试创建一个简单的 .exe 文件来接收参数并返回我的网络的输出,以替代使用C ++包装器。

我使用的是pyinstaller,因为它是过去对我更好的选择。

现在,我仅使用导入内容构建一个 .py 文件,但是我已经遇到以下错误:

RuntimeError: Cannot find the MXNet library.
List of candidates:
C:\Users\<user>\AppData\Local\Temp\_MEI52802\mxnet\libmxnet.dll
...

我的imports.py

import time
import numpy as np
import mxnet as mx
from mxnet import gluon, autograd, nd
from mxnet.gluon import nn, rnn
import string
import cv2
import glob
import time
import model

我尝试过的事情:

  • 在python 3.6 / 3.5 / 3.4中使用pyinstaller;
  • 编辑 .spec 并将缺少的 dll 添加到二进制列表中;
  • 将mxnet添加为隐藏的导入。

致谢。

3 个答案:

答案 0 :(得分:1)

这是看起来好像抛出异常的MXNet行:https://github.com/apache/incubator-mxnet/blob/c6b1fd5a74152b64f92a8b76e1d28f4c0d4f00cd/python/mxnet/libinfo.py#L73

这意味着您需要在Windows上设置库路径($ PATH),以包括包含MXNet的目录。

奇怪的是MXNet安装在temp目录中。我建议按照mxnet.io的安装说明使用Pip或Conda安装MXnet。

https://mxnet.incubator.apache.org/versions/master/install/windows_setup.html

答案 1 :(得分:0)

我将给出解决方案。我的电脑上有Anaconda。

如果mxnet安装在Lib \ site-packages \ mxnet中,则需要创建一个具有以下内容的hook-mxnet.py文件:

  

从PyInstaller.utils.hooks导入get_package_paths

     

datas = [(get_package_paths('mxnet')[1],“ mxnet”),]

并将此文件复制到您的PyInstaller文件夹中:

库\ site-packages \ PyInstaller \ hooks

运行pyinstaller时,需要使用-p选项添加mxnet的路径:

  

pyinstaller myApp.py -p``此点的路径''\ Lib \ site-packages

它将把整个mxnet文件夹复制到dist输出文件夹中。 希望对您有帮助...

答案 2 :(得分:0)

在您的规范文件中找到datas属性,并按如下所示对其进行编辑:

datas=[('venv/Lib/site-packages/mxnet/*.dll', 'mxnet')]