Я создал виртуальную среду Python с именем 'env1' и установил пакет'asticsearch 'в ее среде. Это было нормально с вызовом ниже команды в командной строке окна.
// In env1 environment
(env1)C:\> python
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import elasticsearch // works fine
>>>
Это также нормально с вызовом вне среды env1.
C:\>C:/Users/user/Anaconda3/envs/env1/python C:/test.py
«importasticsearch» находится в файле test.py.
Проблема в том, что я пытаюсь выполнить команду второго метода в Java, как показано ниже,
String[] cmd = new String[] { "C:/Users/user/Anaconda3/envs/env1/python", "C:/test.py"};
Process process = new ProcessBuilder(cmd).start();
Я получил сообщение об ошибке.
Traceback (most recent call last):
File "C:/test.py", line 1, in <module>
import elasticsearch
File "C:\Users\user\Anaconda3\envs\env1\lib\site-packages\elasticsearch\__init__.py", line 24, in <module>
from .client import Elasticsearch
File "C:\Users\user\Anaconda3\envs\env1\lib\site-packages\elasticsearch\client\__init__.py", line 4, in <module>
from ..transport import Transport
File "C:\Users\user\Anaconda3\envs\env1\lib\site-packages\elasticsearch\transport.py", line 5, in <module>
from .connection import Urllib3HttpConnection
File "C:\Users\user\Anaconda3\envs\env1\lib\site-packages\elasticsearch\connection\__init__.py", line 3, in <module>
from .http_urllib3 import Urllib3HttpConnection, create_ssl_context
File "C:\Users\user\Anaconda3\envs\env1\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 2, in <module>
import ssl
File "C:\Users\user\Anaconda3\envs\env1\lib\ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: DLL load failed
Другие пакеты (например, запросы) были импортированы хорошо, но только тот, кто знает, почему?