2016-11-21 23 views
7

我是Nifi和python的新手在Nifi中導入模塊ExecuteScript

我想執行我的python腳本。所以使用了ExecuteScript並試圖導入某些模塊。我已導入這樣的:

import json, sftp, paramiko 

雖然我已經SFTP安裝,當我在Executescript導入它,它說「無法處理會話無模塊命名SFTP在1號線。」

which -a sftp 
/usr/bin/sftp 

當還導入paramiko時,得到了同樣的錯誤。

回答

10

ExecuteScript和InvokeScriptedProcessor使用的「python」引擎實際上是Jython,而不是純Python。這意味着它無法加載本地模塊(.so文件,編譯的C文件等)。根據this SO post,paramiko使用具有本地庫的Crypto,因此不能在Jython中使用(請參閱this post的底部以瞭解我的評論)。我的猜測是sftp庫的功能是一樣的。

Jython可以使用純Python模塊,有a discussion on the NiFi mailing list關於如何指向(和包含)這些類型的模塊。

+0

我應該如何設置「Module Directory」屬性,以便ExecuteScript將使用「pip」安裝的模塊? – Dan