Skip to content

Instantly share code, notes, and snippets.

@fortune
Last active October 9, 2025 07:33
Show Gist options
  • Select an option

  • Save fortune/754e97d2741d671543f056572718ba09 to your computer and use it in GitHub Desktop.

Select an option

Save fortune/754e97d2741d671543f056572718ba09 to your computer and use it in GitHub Desktop.
KNIME and Python Integration

KNIME の Python Integration と Python 環境の構築

KNIME Python Integration Guide

1. 前提条件

  • Anaconda Navigator がインストール済みの Mac OS X に KNIME 5.4.0 をインストール
  • KNIME を実行して、Menu から Install Extensions を選択し、そこで KNIME Python Integration をインストール

Python Integration 拡張のインストールにより、最低限の Python パッケージがバンドル済みの Python 環境が自動で構築され、Python Script ノードや Python View ノードの実行では、その環境が利用される。

2. Conda との関係

Python Integration 拡張のインストールにより自動作成される Python 環境は Anaconda Navigator 上で Environments を確認したときにも表示されるし、conda コマンでも確認できる。

conda env list
# conda environments:
#
                         /Applications/KNIME 5.4.0.app/Contents/Eclipse/bundling/envs/org_knime_pythonscripting
base                     /Users/kazu/opt/anaconda3

これは、conda create コマンドで --name オプションではなく --prefix オプションでパスを指定して環境作成した場合と同じ状況だ。--name オプションを 使うと Anaconda をインストールしたディレクトリ(ここでは /Users/kazu/opt/anaconda3/)の envs/ ディレクトリ内に作成されるが、--prefix オプションを 使うと、環境を作成するディレクトリを指定できる。どちらの場合も conda env list コマンドで確認できる。

KNIME 5.4 から 5.5 にアップグレードすると、上に表示されていた環境は削除され、見えなくなる。

3. Conda での Python 環境構築と KNIME での設定

バンドルされた Python 環境には入っていない Python パッケージを使いたいときなどは、別に Conda で Python 環境を作成して、それを KNIME で使うように 設定しなければならない。

まずは、KNIME のワークスペースフォルダに conda-env ディレクトリを作成してそこに Conda 環境をつくろう(KNIME 用につくるのでこうする)。

mkdir conda-env
conda create --prefix conda-env/my_python_env -c knime -c conda-forge knime-python-scripting=5.4 python=3.11

こうすると、Python 3.11 をベースにして、KNIME で必要な Python パッケージである knime-python-scripting の他、numpy や scikit-learn 等もインストールされた Conda 環境が作成される。 これは Anaconda Navigator の Environments でも確認できるし、conda env list でも確認できる。

conda env list
# conda environments:
#
                         /Applications/KNIME 5.4.0.app/Contents/Eclipse/bundling/envs/org_knime_pythonscripting
                         /Users/kazu/knime-workspace/conda-env/my_python_env
base                     /Users/kazu/opt/anaconda3

次にパンドルされた Python 環境の代わりに新たに作成した環境を使うように KNIME を設定しなければならない。KNIME の実行ウィンドウの右上の Preferences からシステムにインストールされている Conda のディレクトリを指定する。

スクリーンショット 2025-01-25 17 05 34

その後、使用する Python 環境を Bundled から Conda に変えて、使用したい Conda 環境を選べばいい。

スクリーンショット 2025-01-25 17 15 13

指定した Conda 環境に利用したい Python パッケージをインストールすれば、それらが Python Script ノードや Python View ノードで使用可能になる。

4. ノード固有の Conda 環境

https://docs.knime.com/latest/python_installation_guide/#_configure_node_specific_environments

Conda Environment Propagation ノードを使うと、KNIME アプリケーション全体ではなく、ワークフローのノードの中で設定した Conda 環境を ダウンストリームにある Python Script ノードや Python View ノードで引き継いで使える。これにより、

  • 環境をワークフロー上のノードでひとまとめに管理できる。
  • ワークフローを共有、移動するときに必要なライブラリが一括インストールされた環境が自動再構築できるので環境の再現性が高まる。
  • 設定ミスが減る。

といった効用がある。

4.1 Setting up

Conda Environment Propagation ノードを使用するワークフローを作成するためには、まずそのノードで使用する Conda 環境を作成しなければならない。

conda create --name knime_networkx -c knime -c conda-forge knime-python-scripting=5.4 python=3.11 networkx

Conda Environment Propagation ノードのためには --prefix ではなく --name を指定しなければならない。knime-python-scripting パッケージのインストールは必須。これがないと、ダウンストリームの Python Script ノードで Python を実行することができない。networkx はダウンストリームとなる Python Script ノードで使用したいパッケージ。これらは Conda 環境作成後にインストールすることもできる。

conda env list
# conda environments:
#
                         /Applications/KNIME 5.4.0.app/Contents/Eclipse/bundling/envs/org_knime_pythonscripting
                         /Users/kazu/knime-workspace/conda-env/my_python_env
base                     /Users/kazu/opt/anaconda3
knime_networkx           /Users/kazu/opt/anaconda3/envs/knime_networkx

次に、KNIME のワークフローの作成画面で Conda Environment Propagation ノードの設定をする。

スクリーンショット 2025-01-28 16 27 04 スクリーンショット 2025-01-28 16 33 20

設定画面の Conda environment には KNIME 全体の Preferences で設定済みの Conda に作成済みの Conda 環境が現れるので、使用したい環境名を 選ぶ。すると、その環境にインストール済みのパッケージリストが表示される。これは、コマンドラインでその環境を active にして conda list コマンドを 実行したときに表示されるリストと同じだ。ワークフローを他のマシンへともっていって、この Conda 環境を再構築するときに明示的にインストールしたいパッケージをここから選択する。include only explicitly installed ボタンをクリックすると、この環境に明示的にインストールされたパッケージのみが 選択される。Output variable name はダウンストリームの Python Script ノードに環境についての情報を与えるために使用する変数名だ。デフォルト名以外のものに変更することも可能。最後に OK ボタンをクリックして設定をノードに覚えさせる。

スクリーンショット 2025-01-28 16 48 32

Conda Environment Propagation ノードの出力を Python Script ノードの Variable Port へとつなぐ。Python Script ノードでは Conda Environment Propagation ノードの Conda 環境を Output variable name に設定した変数名で参照できる。

スクリーンショット 2025-01-28 16 55 10

スクリーンショット 2025-01-28 16 57 21

次に Python Script ノードの設定画面の Kebab メニューボタンから Set Python environment を選択し、そこから環境を選択する。

ここまでくれば、そのワークフロー上で Conda Environment Propagation ノードの Conda 環境をダウンストリームの Python Script ノード内で 使用できるようになる。

4.2 Exporting

上で作成したワークフローを Export して他のマシンの KNIME 上に Import することができる。そのとき、Conda Environment Propagation ノードの 設定画面を開くと次のようになる。

スクリーンショット 2025-01-28 18 15 05

新しい環境には knime_networkx という Conda 環境は存在しないが、元の環境で設定した内容が表示されている。 元の knime_networkx という Conda 環境にインストールされていたパッケージ一覧において、ノードの設定でチェックを入れていたものにチェックがついている。また、include only explicitly installed ボタンは無効化されている。ここでの設定を変更する必要は ないのでこのまま Cancel していい(というか、変更しない方がいい)。

次に Conda Environment Propagation ノードを実行すると、新しいマシン上に knime_networkx という Conda 環境が自動構築され、ダウンストリームにある Python Script ノードでその環境が使用される。つまり、元のマシンと同様にワークフローを使うことができる。自動構築された環境は、ユーザが作成する場合と同様に conda env list コマンドで確認できる。

4.3 Export 先に同名の Conda 環境があったらどうなるか?

Export 先に knime_networkx という同名ではあるが、異なるパッケージをインストールした Conda 環境を

conda create --name knime_networkx -c conda-forge  python=3.13 numpy

のように作成してみる。その後で先ほどのワークフローを Import して Conda Environment Propagation ノードの設定を確認すると次のようになる。

スクリーンショット 2025-01-28 18 55 33

元の knime_networkx ではなく、現在の knime_networkx Conda 環境にインストール済みのパッケージの一覧が表示される。そのうちの5つは元の knime_networkx 環境には存在しなかった(もしくは Version や Build 番号が違う)と言っている(と思われる)。また、3つのパッケージは 元の Conda Environment Propagation ノードの設定でチェックが入っていたが、現在の環境には存在していないと言っている(と思われる)。そして チェックがついているのは、元の Conda Environment Propagation ノードの設定でチェックが入っていたものだ。

これをこのまま OK してノードを実行しても、現在の環境が上書きされることはなく、したがってダウンストリームの Python Script ノードを実行しても 失敗する。この設定で Always overwrite existing environment にチェックを入れれば、次にノードを実行したときに現在の環境が上書きされる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment