ImportError: Не удалось импортировать модуль расширения с несколькими массивами

Я пытаюсь написать сценарий Python на Java с помощью ScriptEngine. Но когда я импортирую модуль 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 ОС: Windows 7 - 64 бита

1 ответ

Numpy написан на Фортране и скомпилирован в двоичный файл. По этой причине он не совместим с JVM. Другие пакеты, которые вы импортируете, реализованы на чистом Python.

CPython, стандартная реализация Python, проделала большую работу, чтобы оставаться совместимой на двоичном уровне. Массивы Numpy имеют ту же структуру памяти, что и массивы C, которые не имеют такую ​​же структуру памяти, как массивы Java. Чем глубже вы углубляетесь в python, тем больше несовместимостей в том, почему он не будет работать.

Другие вопросы по тегам