6.2 Conda環境を作成および保存するための管理タスク

OML Notebooksでは、ユーザーADMINは、環境の作成および削除、パッケージのインストールおよび削除など、OMLユーザーのconda環境のライフサイクルを管理できます。

ユーザーADMINによって作成されたconda環境は、Autonomous Databaseインスタンスに関連付けられたオブジェクト・ストレージ・バケット・フォルダに格納されます。OMLユーザーは、拡張condaコマンドを使用してこのようなconda環境をダウンロードできます。conda環境は、%conda段落でダウンロードおよびアクティブ化の機能を使用してダウンロードおよびアクティブ化した後に使用できます。アクティブ化された環境は、非アクティブ化されるまで使用できます。

Conda環境の作成

OML NotebooksでADMINユーザーとして、%condaを使用して段落にcondaインタプリタを指定した後、createコマンドを使用してsbenvという名前のconda環境を作成し、seabornパッケージをインストールします。pythonパラメータを使用してPythonバージョンを指定します。ここでは、Python 3.10はOML4Pyとの互換性のために使用されます。

ノート:

condaによってパッケージが環境にインストールされると、必要な依存関係もインストールされます。ベスト・プラクティスとして、依存関係の競合を回避するために、特定の環境で必要なパッケージをすべて同時にインストールします。

ノート:

矛盾を防ぐために、サードパーティ・パッケージ用のconda環境を作成するときはpython=3.10.8を指定します。

%conda

create -n sbenv python==3.10.8 seaborn

オブジェクト・ストレージへの環境のアップロード

Autonomous Databaseインスタンスに関連付けられたオブジェクト・ストレージに環境をアップロードします。ここでは、環境の説明およびアプリケーション名OML4Pyに対応するタグを指定します。

%conda

upload sbenv --description 'Conda environment with seaborn' -t application "OML4PY"
Uploading conda environment sbenv
Upload successful for conda environment sbenv

これで、OMLユーザーが環境をダウンロードできるようになります。アップロードされた環境は、削除されるまでオブジェクト・ストレージに保持されます。埋込み実行で使用するにはアプリケーション・タグが必要です。たとえば、OML4Py Embedded Python ExecutionはOML4Pyタグが含まれるconda環境と連携し、OML4R Embedded R ExecutionはOML4Rタグが含まれるconda環境と連携します。

データ・センター・リージョンごとに1つのオブジェクト・ストレージ・バケットがあります。conda環境は、テナンシおよびデータベースに対応するオブジェクト・ストレージ内のフォルダに保存されます。このフォルダはAutonomous Databaseによって管理され、OML Notebooksを介してのみユーザーが使用できます。単一のconda環境には8Gの最大サイズがあり、オブジェクト・ストレージにはサイズ制限がありません。

管理者以外のユーザーとしてログインし、%condaを使用してノートブック段落にcondaインタプリタを指定します。list-saved-envsコマンドを使用して、オブジェクト・ストレージに保存された環境のリストを取得します。

%conda

list-saved-envs

-eパラメータの引数として環境名を指定し、環境にインストールされているパッケージのリストを要求します。

%conda

list-saved-envs -e sbenv --installed-packages

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

{
  "name": "sbenv",
  "size": "1.7 GiB",
  "description": "Conda environment with seaborn",
  "tags": {
    "application": "OML4PY"
  },
  "number_of_installed_packages": 78,
  "installed_packages": [
    "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"
  ]
}

オブジェクト・ストレージに保存されている環境の削除

deleteコマンドを使用して、オブジェクト・ストレージに保存されている環境を削除します。

ノート:

オブジェクト・ストレージに保存されている環境を削除できるのは、ユーザーADMINのみです。
%conda

delete sbenv
Deleting conda environment sbenv
Deletion successful for conda environment sbenv