Попытка установить модуль gRPC python на Splunk

Я пытаюсь запустить внешний скрипт Python «PyClient.py» на Splunk, и для этого требуется внешний модуль gRPC. Я установил модуль gRPC локально, следуя краткому руководству по Python с сайта http://www.grpc.io/docs/quickstart/python.html . Журналы, сгенерированные в файле splunkd, выглядят следующим образом:

    06-16-2017 18:20:49.728 +0530 WARN  IntrospectionGenerator:resource_usage -   RU - Failure executing PDH query, skipping getting iostats data this collection cycle. Status code is -2147481643
    06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" Traceback (most recent call last):
    06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""   File "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py", line 2, in <module>
    06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""     import grpc
    06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""   File "C:\Program Files\Splunk\etc\apps\Test\bin\grpc\__init__.py", line 37, in <module>
    06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""     from grpc._cython import cygrpc as _cygrpc
    06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
    06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" Traceback (most recent call last):
    06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""   File "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py", line 2, in <module>
    06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""     import grpc
    06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""   File "C:\Program Files\Splunk\etc\apps\Test\bin\grpc\__init__.py", line 37, in <module>
    06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py""     from grpc._cython import cygrpc as _cygrpc
    06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.

У кого-нибудь есть какие-либо предложения о том, как очистить эту ошибку? Или как установить внешний модуль gRPC на Splunk?

Заранее спасибо.


person hridayns    schedule 16.06.2017    source источник
comment
Можете ли вы рассказать больше о том, как вы установили gRPC Python и работаете с ним? Вы используете pip? Вы используете виртуальную среду?   -  person Nathaniel Manista At Google    schedule 16.06.2017
comment
Команда python -V сообщает мне, что локально установленная версия Python — 2.7.13. Следуя краткому руководству по Python (ссылка под вопросом), я использовал следующие команды локально на своем компьютере для установки gRPC для Python: python -m pip install --upgrade pip python -m pip install grpcio python -m pip install grpcio-tools Так что да, я использую pip. Но мне нужно установить эти модули Python в мою установку Splunk. Чтобы я мог запустить там свой скрипт на Python. Пожалуйста, спросите меня о чем-нибудь еще, что вы хотели бы знать, чтобы вы могли мне помочь. Спасибо.   -  person hridayns    schedule 19.06.2017
comment
Прошу прощения, но я ничего не знаю о Splunk. Это вещь, которая имеет среду Python? Известно ли, что эта среда Python совместима с скомпилированными модулями расширения? gRPC Python является таким модулем; это не чисто код Python.   -  person Nathaniel Manista At Google    schedule 21.06.2017
comment
Да, на платформе Splunk установлен собственный Python (точнее, Python версии 2.7.13). Я не уверен, что он совместим с скомпилированными модулями расширения. Но я надеюсь, что есть способ использовать модуль gRPC на платформе Splunk, чтобы выполнить один из моих скриптов, который импортирует gRPC.   -  person hridayns    schedule 21.06.2017


Ответы (2)


Это похоже на несовместимость с 32/64-битной Windows.

При установке gRPC убедитесь, что вы явно используете дистрибутив Splunk Python для pip install grpcio.

C:\Program Files\Splunk\<Python2.7 binary> -m pip install --upgrade pip

C:\Program Files\Splunk\<Python2.7 binary> -m pip install grpcio

person kpayson64    schedule 27.06.2017
comment
извини @kpayson64, проблема была не в этом. Но спасибо за ответ. У меня не получилось использовать среду Splunk Python для установки модулей. В то время он сказал, что требование уже выполнено в моих локальных каталогах. Но он не использовал его для запуска моих сценариев. - person hridayns; 28.06.2017

Я уже нашел решение. Мне пришлось написать скрипт-оболочку для моего скрипта Python, который отключал или удалял (удалял) «LD_LIBRARY_PATH» и «PYTHONPATH». Для систем на базе Linux мне также пришлось отменить или удалить (удалить) переменную среды «PATH». После выполнения вышеуказанных шагов Splunk также использовал мою локальную версию Python и установленные модули. И это сработало. Надеюсь, это поможет всем, кто пытается использовать внешние модули в Splunk, но не может понять, почему это не работает. :)

person hridayns    schedule 28.06.2017