【问题标题】:pyinstaller missing mxnet dllpyinstaller 缺少 mxnet dll
【发布时间】:2018-11-13 17:27:04
【问题描述】:

我一直在尝试创建一个简单的 .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 添加为隐藏导入。

问候。

【问题讨论】:

  • 我猜在 python 中你实际上使用绑定到 MXNet 提供的 dll。这个库真的安装了吗?运行 PyInstaller 后,您是否在输出文件夹中看到此 dll?你也可以试试像 Sysinternals ProcMon 这样的工具,看看 python 解释器在哪里寻找这个 dll。
  • 它已安装,尽管我在 pyinstaller 输出构建文件夹中找不到它。我没有尝试查看它在哪里寻找它,因为错误告诉我它正试图在临时文件夹中找到它。绑定是一种可能性,我不知道 pyinstaller 会如何响应,这可能是使用 mxnet 的一种复杂方法。感谢您的想法。
  • 你能解决这个问题吗?

标签: python exe pyinstaller mxnet


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    从 PyInstaller.utils.hooks 导入 get_package_paths

    数据 = [(get_package_paths('mxnet')[1],"mxnet"),]

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

    Lib\site-packages\PyInstaller\hooks

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

    pyinstaller myApp.py -p ''your-path-to-this-point''\Lib\site-packages

    它会将整个 mxnet 文件夹复制到您的 dist 输出文件夹中。 我希望这会有所帮助...

    【讨论】:

      【解决方案3】:

      在您的规范文件中找到datas 属性,并按如下方式进行编辑:

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

      【讨论】:

        猜你喜欢
        • 2018-04-29
        • 1970-01-01
        • 2017-03-19
        • 2022-01-18
        • 1970-01-01
        • 2011-04-15
        • 2020-09-01
        • 2014-08-31
        • 2010-09-18
        相关资源
        最近更新 更多