I am new to Nifi and python
i want to execute my python script. So used ExecuteScript and tried to import certain modules. I have imported like this:
import json, sftp, paramiko
Though i have sftp installed, When i import it in Executescript, it says "Failed to process session. No module named sftp at line number 1"
which -a sftp /usr/bin/sftp
When importing paramiko also, got the same error.
The "python" engine used by ExecuteScript and InvokeScriptedProcessor is actually Jython, not pure Python. This means it cannot load native modules (.so files, compiled C files, etc.). According to this SO post, paramiko uses Crypto which has native libraries, so cannot be used in Jython (see the bottom of this post for my comment on that). My guess is that the sftp library does the same.
Jython can make use of pure Python modules, there is a discussion on the NiFi mailing list about how to point at (and include) those kinds of modules.