2016-11-21 12 views
7

NifiとPythonを初めて使用しています。Nifi ExecuteScriptのインポートモジュール

pythonスクリプトを実行します。 ExecuteScriptを使用して、特定のモジュールをインポートしようとしました。私はSFTPインストールされているけれども、私はExecutescriptでそれをインポートすると、それが言う、

import json, sftp, paramiko 

which -a sftp 
/usr/bin/sftp 

を:私はこのようにインポートしていない「セッションの処理に失敗しました行番号1のNOモジュールという名前のSFTP。」 paramikoもインポートすると、同じエラーが発生します。

答えて

10

ExecuteScriptとInvokeScriptedProcessorで使用される「python」エンジンは、純粋なPythonではなく、実際にはJythonです。つまり、ネイティブモジュール(.soファイル、コンパイル済みCファイルなど)をロードすることはできません。 this SO postによると、paramikoはネイティブライブラリを持つCryptoを使用しているため、Jythonでは使用できません(そのことについては、this postの下を参照してください)。私の推測では、sftpライブラリは同じことをしています。

Jythonは純粋なPythonモジュールを利用することができますが、そのようなモジュールをどのように指し示す(そして含める)かについては、a discussion on the NiFi mailing listがあります。

+0

ExecuteScriptで 'pip'がインストールされたモジュールを使用するように、「Module Directory」プロパティをどのように設定する必要がありますか? – Dan

関連する問題