【问题标题】:ImportError: Importing the multiarray numpy extension module failedImportError:导入多数组 numpy 扩展模块失败
【发布时间】:2018-04-11 14:13:14
【问题描述】:

我正在尝试使用 ScriptEngine 在 Java 中编写 Python 脚本。但是当我导入 tflearn 模块时,它会给我以下错误。

javax.script.ScriptException: ImportError: 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: cannot import name multiarray
 in <script> at line number 1
    at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:222)
    at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:59)
    at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:31)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at com.ultimatix.bot.JavaRunCommand.main(JavaRunCommand.java:48)
Caused by: Traceback (most recent call last):
  File "<script>", line 1, in <module>
  File "D:\Python\Lib\site-packages\tflearn\__init__.py", line 4, in <module>
    from . import config
  File "D:\Python\Lib\site-packages\tflearn\config.py", line 3, in <module>
    import tensorflow as tf
  File "D:\Python\Lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import *
  File "D:\Python\Lib\site-packages\tensorflow\python\__init__.py", line 47, in <module>
    import numpy as np
  File "D:\Python\Lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File "D:\Python\Lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "D:\Python\Lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "D:\Python\Lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "D:\Python\Lib\site-packages\numpy\core\__init__.py", line 26, in <module>
    raise ImportError(msg)

我还尝试导入一些不同的包,如 sys、pickle。它们正在成功导入。

Python 版本:3.5.4 操作系统:窗口 7 - 64 位

【问题讨论】:

    标签: python-3.x numpy tensorflow tflearn scriptengine


    【解决方案1】:

    Numpy 用 Fortran 编写并编译为二进制。因此,在 JVM 上运行是不兼容的。您正在导入的其他包是在纯 python 中实现的。

    CPython 是标准的 Python 实现,为了保持二进制级别的兼容性,已经做了大量工作。 Numpy 数组的内存布局与 C 数组相同,而 C 数组的内存布局与 Java 数组不同。随着您对 python 的深入了解,关于它为什么无法工作的不兼容性会越来越多。

    【讨论】:

    • 感谢 Leland 的回答。有没有解决这种不兼容性的方法?
    • @AnkushBandil 的回答需要响应者宝贵的时间;由于答案可以说是有用的,请接受它
    • @AnkushBandil 清除疑惑是可以的,只要这些疑惑不构成新问题;无论如何,我什么也没说,只是提醒了一些像你这样的新用户经常忽略的事情
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2018-08-18
    • 2017-05-30
    • 1970-01-01
    • 2020-04-29
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多