3
2

SPSS Modelerの拡張ノードでPythonを利用する conda編

Last updated at Posted at 2021-03-24

SPSS Modelerの拡張ノードでPythonを使ってみます。
@1000aki さんがSPSS Modelerの拡張ノードでPythonを利用する ①セットアップと可視化
の記事を書いていらっしゃいて、ここではPython+pipで環境を準備されています。この組み合わせの方がミニマムでパッケージの管理ができますし、PATH設定の面倒もなく手堅いのですが、Condaによるパッケージ管理を使いたいケースもあります。

この記事ではconda環境でSPSS Modelerの拡張ノードを使いたいと思います。

■テスト環境
SPSS Modeler 18.2.2
Windows 2019
Python 3.7.7

1. miniconda の導入

condaはAnaconda Individual Edition(Anaconda Distribution)で導入することが多いと思いますが、今回はミニマムな環境作成を行いたいので、minicondaで導入したいと思います。

1. miniconda Python 3.8のインストーラーのダウンロード

以下のリンク先より、Python 3.8 Miniconda3 Windows 64-bitのインストーラーをダウンロードします。
https://docs.conda.io/en/latest/miniconda.html
image.png

2. miniconda3 インストーラーの実行

インストーラーを起動し、Nextで進みます。
image.png

License Agreementを確認し同意します。
image.png

Install forはここでは"All Users"にしました。"Just Me"で構成することも可能です。

image.png

Destination Folder を控えておきます。例では、C:\ProgramData\Miniconda3です。
image.png

Advanced Optionもそのままで進みます。
image.png

完了したらNextで進みます。
image.png

チェックを外してFinishをクリックします。
image.png

3. conda環境の作成
Modeler 18.2.2で使えるPythonが3.7.7ですし、他の環境と分ける方が望ましいので、専用のConda環境を作ります。
また、私が試した環境ではどうもAnaconda Public Repositoryのscipyなどがうまく動きませんでしたので、conda-forgeからパッケージを入手して環境を作りたいと思います。

modelerというenvironmentをPython 3.7.7、Conda-forgeからのパッケージで作ります。

conda config --append channels conda-forge
conda create -c conda-forge -n modeler python=3.7.7 conda
conda activate modeler
実行例
(base) C:\Users\dsuser01>conda config --append channels conda-forge

(base) C:\Users\dsuser01>conda create -c conda-forge -n modeler python=3.7.7 conda
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\dsuser01\.conda\envs\modeler

  added / updated specs:
    - conda
    - python=3.7.7


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    brotlipy-0.7.0             |py37hcc03f2d_1001         368 KB  conda-forge
    ca-certificates-2020.12.5  |       h5b45459_0         173 KB  conda-forge
    certifi-2020.12.5          |   py37h03978a9_1         143 KB  conda-forge
    cffi-1.14.5                |   py37hd8e9650_0         226 KB  conda-forge
    chardet-4.0.0              |   py37h03978a9_1         215 KB  conda-forge
    conda-4.9.2                |   py37h03978a9_0         3.0 MB  conda-forge
    conda-package-handling-1.7.2|   py37h6dbccfb_0         710 KB  conda-forge
    cryptography-3.4.6         |   py37h20c650d_0         709 KB  conda-forge
    idna-2.10                  |     pyh9f0ad1d_0          52 KB  conda-forge
    menuinst-1.4.16            |   py37hc8dfbb8_1          95 KB  conda-forge
    openssl-1.1.1j             |       h8ffe710_0         5.8 MB  conda-forge
    pip-21.0.1                 |     pyhd8ed1ab_0         1.1 MB  conda-forge
    pycosat-0.6.3              |py37hcc03f2d_1006         102 KB  conda-forge
    pycparser-2.20             |     pyh9f0ad1d_2          94 KB  conda-forge
    pyopenssl-20.0.1           |     pyhd8ed1ab_0          48 KB  conda-forge
    pysocks-1.7.1              |   py37h03978a9_3          28 KB  conda-forge
    python-3.7.7               |       h81c818b_4        14.3 MB
    python_abi-3.7             |          1_cp37m           4 KB  conda-forge
    pywin32-300                |   py37hcc03f2d_0         6.9 MB  conda-forge
    requests-2.25.1            |     pyhd3deb0d_0          51 KB  conda-forge
    ruamel_yaml-0.15.80        |py37hcc03f2d_1004         277 KB  conda-forge
    setuptools-49.6.0          |   py37h03978a9_3         931 KB  conda-forge
    six-1.15.0                 |     pyh9f0ad1d_0          14 KB  conda-forge
    sqlite-3.35.2              |       h8ffe710_0         1.2 MB  conda-forge
    tqdm-4.59.0                |     pyhd8ed1ab_0          77 KB  conda-forge
    urllib3-1.26.4             |     pyhd8ed1ab_0          99 KB  conda-forge
    vc-14.2                    |       hb210afc_4          13 KB  conda-forge
    vs2015_runtime-14.28.29325 |       h5e1d092_4         2.3 MB  conda-forge
    wheel-0.36.2               |     pyhd3deb0d_0          31 KB  conda-forge
    win_inet_pton-1.1.0        |   py37h03978a9_2           8 KB  conda-forge
    wincertstore-0.2           |py37h03978a9_1006          15 KB  conda-forge
    yaml-0.2.5                 |       he774522_0          61 KB  conda-forge
    ------------------------------------------------------------
                                           Total:        39.0 MB

The following NEW packages will be INSTALLED:

  brotlipy           conda-forge/win-64::brotlipy-0.7.0-py37hcc03f2d_1001
  ca-certificates    conda-forge/win-64::ca-certificates-2020.12.5-h5b45459_0
  certifi            conda-forge/win-64::certifi-2020.12.5-py37h03978a9_1
  cffi               conda-forge/win-64::cffi-1.14.5-py37hd8e9650_0
  chardet            conda-forge/win-64::chardet-4.0.0-py37h03978a9_1
  conda              conda-forge/win-64::conda-4.9.2-py37h03978a9_0
  conda-package-han~ conda-forge/win-64::conda-package-handling-1.7.2-py37h6dbccfb_0
  cryptography       conda-forge/win-64::cryptography-3.4.6-py37h20c650d_0
  idna               conda-forge/noarch::idna-2.10-pyh9f0ad1d_0
  menuinst           conda-forge/win-64::menuinst-1.4.16-py37hc8dfbb8_1
  openssl            conda-forge/win-64::openssl-1.1.1j-h8ffe710_0
  pip                conda-forge/noarch::pip-21.0.1-pyhd8ed1ab_0
  pycosat            conda-forge/win-64::pycosat-0.6.3-py37hcc03f2d_1006
  pycparser          conda-forge/noarch::pycparser-2.20-pyh9f0ad1d_2
  pyopenssl          conda-forge/noarch::pyopenssl-20.0.1-pyhd8ed1ab_0
  pysocks            conda-forge/win-64::pysocks-1.7.1-py37h03978a9_3
  python             pkgs/main/win-64::python-3.7.7-h81c818b_4
  python_abi         conda-forge/win-64::python_abi-3.7-1_cp37m
  pywin32            conda-forge/win-64::pywin32-300-py37hcc03f2d_0
  requests           conda-forge/noarch::requests-2.25.1-pyhd3deb0d_0
  ruamel_yaml        conda-forge/win-64::ruamel_yaml-0.15.80-py37hcc03f2d_1004
  setuptools         conda-forge/win-64::setuptools-49.6.0-py37h03978a9_3
  six                conda-forge/noarch::six-1.15.0-pyh9f0ad1d_0
  sqlite             conda-forge/win-64::sqlite-3.35.2-h8ffe710_0
  tqdm               conda-forge/noarch::tqdm-4.59.0-pyhd8ed1ab_0
  urllib3            conda-forge/noarch::urllib3-1.26.4-pyhd8ed1ab_0
  vc                 conda-forge/win-64::vc-14.2-hb210afc_4
  vs2015_runtime     conda-forge/win-64::vs2015_runtime-14.28.29325-h5e1d092_4
  wheel              conda-forge/noarch::wheel-0.36.2-pyhd3deb0d_0
  win_inet_pton      conda-forge/win-64::win_inet_pton-1.1.0-py37h03978a9_2
  wincertstore       conda-forge/win-64::wincertstore-0.2-py37h03978a9_1006
  yaml               conda-forge/win-64::yaml-0.2.5-he774522_0


Proceed ([y]/n)?

-------中略-----------
done
#
# To activate this environment, use
#
#     $ conda activate modeler
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) C:\Users\dsuser01>

作成したmodelerの環境に切り替えます。
プロンプト頭に(modeler) が入ります。

conda info -e
conda activate modeler
実行例
(C:\ProgramData\Miniconda3) C:\Users\dsuser01>conda info -e
# conda environments:
#
base                  *  C:\ProgramData\Miniconda3
modeler                  C:\Users\dsuser01\.conda\envs\modeler


(C:\ProgramData\Miniconda3) C:\Users\dsuser01>conda activate modeler

(modeler) C:\Users\dsuser01>

numpyを試しに導入してみます。

conda install -c conda-forge numpy

実行例
(modeler) C:\Users\dsuser01>conda install -c conda-forge numpy
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\dsuser01\.conda\envs\modeler

  added / updated specs:
    - numpy


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    intel-openmp-2020.3        |     h57928b3_311         2.0 MB  conda-forge
    libblas-3.9.0              |            8_mkl         3.9 MB  conda-forge
    libcblas-3.9.0             |            8_mkl         3.9 MB  conda-forge
    liblapack-3.9.0            |            8_mkl         3.9 MB  conda-forge
    mkl-2020.4                 |     hb70f87d_311       172.4 MB  conda-forge
    numpy-1.20.1               |   py37hd20adf4_0         5.2 MB  conda-forge
    ------------------------------------------------------------
                                           Total:       191.3 MB

The following NEW packages will be INSTALLED:

  intel-openmp       conda-forge/win-64::intel-openmp-2020.3-h57928b3_311
  libblas            conda-forge/win-64::libblas-3.9.0-8_mkl
  libcblas           conda-forge/win-64::libcblas-3.9.0-8_mkl
  liblapack          conda-forge/win-64::liblapack-3.9.0-8_mkl
  mkl                conda-forge/win-64::mkl-2020.4-hb70f87d_311
  numpy              conda-forge/win-64::numpy-1.20.1-py37hd20adf4_0


Proceed ([y]/n)?
Downloading and Extracting Packages
numpy-1.20.1         | 5.2 MB    | ############################################################################ | 100%
liblapack-3.9.0      | 3.9 MB    | ############################################################################ | 100%
intel-openmp-2020.3  | 2.0 MB    | ############################################################################ | 100%
libcblas-3.9.0       | 3.9 MB    | ############################################################################ | 100%
libblas-3.9.0        | 3.9 MB    | ############################################################################ | 100%
mkl-2020.4           | 172.4 MB  | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(modeler) C:\Users\dsuser01>

作成した環境のパッケージを確認します。
作成した2021/2/26の時点では以下のバージョンでパッケージがそろえられました。Python3.7.7だけはconda-forgeになかったようでAnaconda Public Repositoryから取得し、それ以外はconda-forgeから取得できていました。

conda list --show-channel-urls
実行例
(modeler) C:\Users\dsuser01>conda list --show-channel-urls
# packages in environment at C:\Users\dsuser01\.conda\envs\modeler:
#
# Name                    Version                   Build  Channel
brotlipy                  0.7.0           py37hcc03f2d_1001    conda-forge
ca-certificates           2020.12.5            h5b45459_0    conda-forge
certifi                   2020.12.5        py37h03978a9_1    conda-forge
cffi                      1.14.5           py37hd8e9650_0    conda-forge
chardet                   4.0.0            py37h03978a9_1    conda-forge
conda                     4.9.2            py37h03978a9_0    conda-forge
conda-package-handling    1.7.2            py37h6dbccfb_0    conda-forge
cryptography              3.4.6            py37h20c650d_0    conda-forge
idna                      2.10               pyh9f0ad1d_0    conda-forge
intel-openmp              2020.3             h57928b3_311    conda-forge
libblas                   3.9.0                     8_mkl    conda-forge
libcblas                  3.9.0                     8_mkl    conda-forge
liblapack                 3.9.0                     8_mkl    conda-forge
menuinst                  1.4.16           py37hc8dfbb8_1    conda-forge
mkl                       2020.4             hb70f87d_311    conda-forge
numpy                     1.20.1           py37hd20adf4_0    conda-forge
openssl                   1.1.1j               h8ffe710_0    conda-forge
pip                       21.0.1             pyhd8ed1ab_0    conda-forge
pycosat                   0.6.3           py37hcc03f2d_1006    conda-forge
pycparser                 2.20               pyh9f0ad1d_2    conda-forge
pyopenssl                 20.0.1             pyhd8ed1ab_0    conda-forge
pysocks                   1.7.1            py37h03978a9_3    conda-forge
python                    3.7.7                h81c818b_4    defaults
python_abi                3.7                     1_cp37m    conda-forge
pywin32                   300              py37hcc03f2d_0    conda-forge
requests                  2.25.1             pyhd3deb0d_0    conda-forge
ruamel_yaml               0.15.80         py37hcc03f2d_1004    conda-forge
setuptools                49.6.0           py37h03978a9_3    conda-forge
six                       1.15.0             pyh9f0ad1d_0    conda-forge
sqlite                    3.35.2               h8ffe710_0    conda-forge
tqdm                      4.59.0             pyhd8ed1ab_0    conda-forge
urllib3                   1.26.4             pyhd8ed1ab_0    conda-forge
vc                        14.2                 hb210afc_4    conda-forge
vs2015_runtime            14.28.29325          h5e1d092_4    conda-forge
wheel                     0.36.2             pyhd3deb0d_0    conda-forge
win_inet_pton             1.1.0            py37h03978a9_2    conda-forge
wincertstore              0.2             py37h03978a9_1006    conda-forge
yaml                      0.2.5                he774522_0    conda-forge

(modeler) C:\Users\dsuser01>

このmodeler環境のPATHを確認します。

echo %PATH%
実行例
(modeler) C:\Users\dsuser01>echo %PATH%
C:\Users\dsuser01\.conda\envs\modeler;C:\Users\dsuser01\.conda\envs\modeler\Library\mingw-w64\bin;C:\Users\dsuser01\.conda\envs\modeler\Library\usr\bin;C:\Users\dsuser01\.conda\envs\modeler\Library\bin;C:\Users\dsuser01\.conda\envs\modeler\Scripts;C:\Users\dsuser01\.conda\envs\modeler\bin;C:\ProgramData\Miniconda3\condabin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\ibm\gsk8\lib64;C:\Program Files (x86)\ibm\gsk8\lib;C:\PROGRA~1\IBM\SQLLIB\BIN;C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;C:\Program Files\Amazon\AWSCLIV2;C:\Users\dsuser01\AppData\Local\Microsoft\WindowsApps;.

このPATHからminiconda関係のPATHが必要になります。システムやユーザーのPATHに加えることもできますが、なるべく環境に影響を与えないために、これらのPATHをセットしてからModelerを起動するバッチを作っておきます。

modeler1822conda.bat
set Path=C:\Users\dsuser01\.conda\envs\modeler;C:\Users\dsuser01\.conda\envs\modeler\Library\mingw-w64\bin;C:\Users\dsuser01\.conda\envs\modeler\Library\usr\bin;C:\Users\dsuser01\.conda\envs\modeler\Library\bin;C:\Users\dsuser01\.conda\envs\modeler\Scripts;C:\Users\dsuser01\.conda\envs\modeler\bin;C:\ProgramData\Miniconda3\condabin;%PATH%
start "" "C:\Program Files\IBM\SPSS\Modeler\18.2.2\bin\modelerclient.exe"

2. SPSS Modeler用に 独自の Python インストール済み環境を指定

メモ帳などで options.cfg を開きます。options.cfgの更新にはOSの管理者権限が必要です。

options.cfg のデフォルトのパスは下記です。
C:\Program Files\IBM\SPSS\Modeler\18.2.2\config\options.cfg

eas_pyspark_python_path にconda info -eで得られた C:\Users\dsuser01.conda\envs\modelerの python.exe のパスを指定し、上書き保存します。パスの区切り文字はバックスラッシュ(円マーク)を重ねるか、スラッシュに変更します。

options.cfg
# Set to the full path to the python executable (including the executable name) to enable use of PySpark.
eas_pyspark_python_path, "C:<python_install_location>/python.exe"
記載例
# Set to the full path to the python executable (including the executable name) to enable use of PySpark.
eas_pyspark_python_path, "C:/Users/dsuser01/.conda/envs/modeler/python.exe"

3. SPSS Modelerでの動作確認

作成しておいたmodeler1822conda.batでModelerを起動します。
image.png

以下のサンプルストリームを実行してみます。
特に

  • Pythonのバージョン
  • python.exeのパス
  • numpyのバージョン

が作成したmodelerのconda環境のものと一致するかを確認してください。

image.png

4. Modeler Serverでの設定

Modelerクライアントであれば上記のバッチで起動することができますが、Modeler Serverはそうはいきません。システムの環境変数にバッチの中に書いたPATHを設定する必要があります。他にPythonの環境があるとその優先順位によって参照先が変わりうるので、注意してください。

5. サンプルファイル

options.cfg
conda環境のpython.exeをeas_pyspark_python_pathに設定したoptions.cfgです。

modeler1822conda.bat
conda環境へのPATHを通してからModelerクライアント起動するbatファイルです。

pythontest.str
pythonやnumpyのバージョンを出力するテスト用のストリームです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2