5.3 使用可能なConda環境をダウンロードするためのOMLユーザー・タスク

ユーザーADMINがAutonomous Databaseのオブジェクト・ストレージに環境をインストールすると、OMLユーザーとして、ノートブックのPython段落および埋込み実行でその環境をダウンロード、アクティブ化および使用できるようになります。

オブジェクト・ストレージに保持されているすべての環境のリスト

list-saved-envsコマンドを使用して、オブジェクト・ストレージに保存された環境のリストを取得します。

%conda

list-saved-envs 

オブジェクト・ストレージに保持されている名前付き環境に関する情報の取得

-eパラメータの引数として環境名を指定し、環境に関する情報をリクエストします。

%conda

list-saved-envs -e sbenv

出力は、次のようなものです。

{
  "name": "sbenv",
  "size": "1.2 GiB",
  "description": "Conda environment with seaborn",
  "tags": {
    "application": "OML4PY"
  },
  "number_of_installed_packages": 60
}

環境のダウンロードとアクティブ化

downloadコマンドを使用して、オブジェクト・ストレージから環境をダウンロードします。ダウンロードした環境をアクティブ化するには、activateコマンドを使用します。

ノート:

downloadコマンドが含まれる段落は、ノートブックの最初の段落である必要があります。
%conda

download sbenv
activate sbenv
Downloading conda environment sbenv
Download successful for conda environment sbenv

環境で使用可能なパッケージのリスト

listコマンドを使用して、アクティブな環境内の全パッケージのリストを取得します。

%conda

list

出力は、次のようなものです。

# packages in environment at /u01/.conda/envs/sbenv:
#
# Name                    Version                   Build  Channel
blas                      1.0                         mkl
bottleneck                1.3.5            py39h7deecbd_0
brotli                    1.0.9                h5eee18b_7
brotli-bin                1.0.9                h5eee18b_7
ca-certificates           2022.07.19           h06a4308_0
certifi                   2022.9.14        py39h06a4308_0
cycler                    0.11.0             pyhd3eb1b0_0
dbus                      1.13.18              hb2f20db_0
expat                     2.4.4                h295c915_0
fftw                      3.3.9                h27cfd23_1
fontconfig                2.13.1               h6c09931_0
fonttools                 4.25.0             pyhd3eb1b0_0
freetype                  2.11.0               h70c0345_0
giflib                    5.2.1                h7b6447c_0
glib                      2.69.1               h4ff587b_1
gst-plugins-base          1.14.0               h8213a91_2
gstreamer                 1.14.0               h28cd5cc_2
icu                       58.2                 he6710b0_3
intel-openmp              2021.4.0          h06a4308_3561
jpeg                      9e                   h7f8727e_0
kiwisolver                1.4.2            py39h295c915_0
lcms2                     2.12                 h3be6417_0
ld_impl_linux-64          2.38                 h1181459_1
lerc                      3.0                  h295c915_0
libbrotlicommon           1.0.9                h5eee18b_7
libbrotlidec              1.0.9                h5eee18b_7
libbrotlienc              1.0.9                h5eee18b_7
libdeflate                1.8                  h7f8727e_5
libffi                    3.3                  he6710b0_2
libgcc-ng                 11.2.0               h1234567_1
libgfortran-ng            11.2.0               h00389a5_1
libgfortran5              11.2.0               h1234567_1
libpng                    1.6.37               hbc83047_0
libstdcxx-ng              11.2.0               h1234567_1
libtiff                   4.4.0                hecacb30_0
libuuid                   1.0.3                h7f8727e_2
libwebp                   1.2.2                h55f646e_0
libwebp-base              1.2.2                h7f8727e_0
libxcb                    1.15                 h7f8727e_0
libxml2                   2.9.14               h74e7548_0
lz4-c                     1.9.3                h295c915_1
matplotlib                3.5.2            py39h06a4308_0
matplotlib-base           3.5.2            py39hf590b9c_0
mkl                       2021.4.0           h06a4308_640
mkl-service               2.4.0            py39h7f8727e_0
mkl_fft                   1.3.1            py39hd3c417c_0
mkl_random                1.2.2            py39h51133e4_0
munkres                   1.1.4                      py_0
ncurses                   6.3                  h5eee18b_3
numexpr                   2.8.3            py39h807cd23_0
numpy                     1.22.3           py39he7a7128_0
numpy-base                1.22.3           py39hf524024_0
openssl                   1.1.1q               h7f8727e_0
packaging                 21.3               pyhd3eb1b0_0
pandas                    1.4.4            py39h6a678d5_0
pcre                      8.45                 h295c915_0
pillow                    9.2.0            py39hace64e9_1
pip                       22.1.2           py39h06a4308_0
pyparsing                 3.0.9            py39h06a4308_0
pyqt                      5.9.2            py39h2531618_6
python                    3.9.0                hdb3f193_2
python-dateutil           2.8.2              pyhd3eb1b0_0
pytz                      2022.1           py39h06a4308_0
qt                        5.9.7                h5867ecd_1
readline                  8.1.2                h7f8727e_1
scipy                     1.7.3            py39h6c91a56_2
seaborn                   0.11.2             pyhd3eb1b0_0
setuptools                63.4.1           py39h06a4308_0
sip                       4.19.13          py39h295c915_0
six                       1.16.0             pyhd3eb1b0_1
sqlite                    3.39.2               h5082296_0
tk                        8.6.12               h1ccaba5_0
tornado                   6.2              py39h5eee18b_0
tzdata                    2022c                h04d1e81_0
wheel                     0.37.1             pyhd3eb1b0_0
xz                        5.2.5                h7f8727e_1
zlib                      1.2.12               h5eee18b_3
zstd                      1.5.2                ha4553b6_0

例5-1 seabornを使用したビジュアライゼーションの作成

次の例に、インストールしてアクティブ化した環境での使用可能なパッケージの使用を示します。pandas、seabornおよびmatplotlibパッケージをインポートし、seabornライブラリからirisデータセットをpandas dataframeとしてロードします。pairplot seaborn関数は、データセットのすべての変数間のペアの関係をプロットします。

%python

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.set_style("ticks")
sb.pairplot(df,hue = 'species',diag_kind = "kde",kind = "scatter",palette = "husl")
plt.show()

この例の出力は次のようになります。

図5-1 Irisペア・プロット



例5-2 関数の文字列表現を作成し、OML4Pyスクリプト・リポジトリに保存

OML4Pyを使用すると、関数は文字列定義表現を使用してスクリプト・リポジトリに保存されるため、Embedded Python Executionで実行できます。関数sb_plotを作成し、関数が期待どおりに動作することを検証した後、これを(書式設定のために三重引用符で囲んで)文字列として指定し、OML4Pyスクリプト・リポジトリに保存します。oml.script.create関数を使用して、1つのユーザー定義Python関数をOML4Pyスクリプト・リポジトリに格納します。パラメータ"sb_plot"は、ユーザー定義関数の名前を指定する文字列です。パラメータfunc=sb_plotは、実行するPython関数です。

%python

sb_plot = """def sb_plot():
    import pandas as pd
    import seaborn as sb
    from matplotlib import pyplot as plt
    df = sb.load_dataset('iris')
    sb.set_style("ticks")
    sb.pairplot(df,hue = 'species',diag_kind = "kde",kind = "scatter",palette = "husl")
    plt.show()"""
    
oml.script.create("sb_plot", func=sb_plot)

Embedded Python ExecutionのPython APIを使用して、スクリプト・リポジトリに保存したユーザー定義Python関数を実行します。

%python

oml.do_eval(func="sb_plot", graphics=True)

この例の出力は、次のようになります。

図5-2 Irisペア・プロット



現在の環境の非アクティブ化

deactivateコマンドを使用して、環境を非アクティブ化します。

ノート:

一度にサポートされるアクティブな環境は1つのみです。そのため、新しくアクティブ化された環境によって古い環境が置き換えられます。ベスト・プラクティスとして、ログオフする前に環境を非アクティブ化します。
%conda

deactivate
Conda environment deactivated