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, тем больше несовместимостей в том, почему он не будет работать.