2016-11-21 7 views
7

Я новичок в Nifi и pythonИмпорт модулей в Nifi ExecuteScript

Я хочу выполнить мой скрипт на питоне. Так использовался ExecuteScript и пытался импортировать определенные модули. Я импортировал так:

import json, sftp, paramiko 

Хотя я SFTP установлен, когда я импортировать его в Executescript, она говорит: «Не удалось обработать сеанс Нет модуля имени SFTP на линии № 1.»

which -a sftp 
/usr/bin/sftp 

При импорте paramiko также получил ту же ошибку.

ответ

10

Механизм «python», используемый ExecuteScript и InvokeScriptedProcessor, на самом деле является Jython, а не чистым Python. Это означает, что он не может загружать собственные модули (файлы .so, скомпилированные файлы C и т. Д.). Согласно this SO post, paramiko использует Crypto, который имеет собственные библиотеки, поэтому не может использоваться в Jython (см. Нижнюю часть this post для моего комментария к этому). Я предполагаю, что библиотека sftp делает то же самое.

Jython может использовать чистые модули Python, есть a discussion on the NiFi mailing list о том, как указывать (и включать) эти типы модулей.

+0

Как установить свойство «Каталог модулей» таким образом, чтобы ExecuteScript использовал модули, установленные 'pip'? – Dan