2016-11-21 3 views
7

Ich bin neu in Nifi und PythonImportieren von Modulen in Nifi ExecuteScript

Ich möchte mein Python-Skript ausführen. So benutzte ExecuteScript und versuchte bestimmte Module zu importieren. Ich habe wie folgt importiert:

import json, sftp, paramiko 

Obwohl ich SFTP installiert haben, wenn ich es in ExecuteScript importieren, heißt es „Sitzung verarbeiten fehlgeschlagen Kein Modul namens SFTP in Zeile Nummer 1“.

which -a sftp 
/usr/bin/sftp 

Beim Importieren von Paramiko wurde auch der gleiche Fehler angezeigt.

Antwort

10

Der "Python" Motor verwendet von ExecuteScript und InvokeScriptedProcessor ist eigentlich Jython, nicht reiner Python. Das bedeutet, dass native Module (.so-Dateien, kompilierte C-Dateien usw.) nicht geladen werden können. Entsprechend , verwendet paramiko Crypto, das native Bibliotheken hat, also kann nicht in Jython verwendet werden (sehen Sie die Unterseite von this post für meinen Kommentar dazu). Meine Vermutung ist, dass die sftp-Bibliothek das gleiche tut.

Jython kann reine Python-Module verwenden, dort gibt es a discussion on the NiFi mailing list darüber, wie man auf diese Arten von Modulen zeigt (und sie einschließt).

+0

Wie sollte ich die Eigenschaft "Module Directory" so einstellen, dass ExecuteScript 'pip'-installierte Module verwendet? – Dan

Verwandte Themen