カスタマイズの例

このトピックでは、環境定義を作成するときに、Python および R 用に提供されているテンプレートを使用して conda または pip でカスタム・ライブラリーを追加する方法について、さまざまな例を示します。

以下に例を示します:

ヒントは以下のとおりです:

conda パッケージの追加

pandas-profiling の最新バージョンを取得するには、以下のようにします。

dependencies:
  - pandas-profiling

これは、ノートブックで conda install pandas-profiling を実行するのと同等です。

pip パッケージの追加

特定のパッケージが conda チャネルで使用できない場合は、 pip を使用して環境をカスタマイズすることもできます:

dependencies:
  - pip:
    - ibm-watson-machine-learning

これは、ノートブックで pip install ibm-watson-machine-learning を実行するのと同等です。

カスタマイズは、実際には、指定された pip パッケージをインストールするだけではありません。 conda のデフォルトの動作では、 pip 自体の新規バージョンも検索してインストールします。 conda ですべての暗黙的依存関係を検査するには、多くの場合は数分かかり、また数ギガバイトのメモリーも必要となります。 以下のカスタマイズにより、 pipのインストールがショートカットされます:

channels:
  - empty
  - nodefaults

dependencies:
  - pip:
    - ibm-watson-machine-learning

conda チャネル empty はパッケージを提供しません。 特に pip パッケージはありません。 condapip のインストールを試行せず、その代わりに事前にインストールされているバージョンを使用します。 チャネルのリスト内のキーワード nodefaults は、リスト内に少なくとも 1 つの他のチャネルを必要とすることに注意してください。 それ以外の場合、 conda はキーワードを暗黙的に無視し、デフォルト・チャネルを使用します。

conda パッケージと pip パッケージの結合

複数のパッケージを 1 行に 1 パッケージずつリストできます。 単一のカスタマイズで、conda パッケージと pip パッケージの両方を使用できます。

dependencies:
  - pandas-profiling
  - scikit-learn=0.20
  - pip:
    - watson-machine-learning-client-V4
    - sklearn-pandas==1.8.0

必要なテンプレート表記は、先行スペースが重要であることに注意してください。 conda パッケージのリスト内の各項目には、2 つの先行スペースが必要です。 pip パッケージのリスト内の各項目には、4 つの先行スペースが必要です。 conda パッケージのバージョンは、単一の等号 (=) を使用して指定する必要があります。一方、pip パッケージのバージョンは、2 つの等号 (==) を使用して追加する必要があります。

内部依存関係を持つ複合パッケージの追加

多数のパッケージを追加する場合、または多数の内部依存関係を持つ 1 つの複合パッケージを追加する場合、conda のインストールに時間がかかったり、エラー・メッセージが表示されずに conda のインストールが停止したりすることがあります。 これを防ぐには、以下のようにします。

  • 追加するパッケージのバージョンを指定します。 これにより、conda が依存関係を解決するための検索スペースが低減します。
  • 環境のメモリー・サイズを増やします。
  • .condarc ファイルに定義されているデフォルトの conda チャネルの代わりに、特定のチャネルを使用します。 これにより、大きなチャネルで長時間の検索が実行されるのを防ぎます。

デフォルトの conda チャネルを使用しないカスタマイズの例:

# get latest version of the prophet package from the conda-forge channel
channels:
  - conda-forge    
  - nodefaults

dependencies:
  - prophet

このカスタマイズは、ノートブックでの以下のコマンドに相当します。

!conda install -c conda-forge --override-channels prophet -y

「R」 ノートブックの conda パッケージの追加

以下の例は、R ノートブックで使用する conda パッケージを追加するカスタマイズを作成する方法を示しています:

channels:
  - defaults

dependencies:
  - r-plotly

このカスタマイズは、ノートブックでの以下のコマンドに相当します。

print(system("conda install r-plotly", intern=TRUE))

conda 内の 「R」 パッケージの名前は、通常、接頭部 r-で始まります。 カスタマイズで plotly のみを使用する場合、インストールは成功しますが、「R」 パッケージの代わりに Python パッケージがインストールされます。 その後、 library(plotly)のように 「R」 コードでパッケージを使用しようとすると、エラーが返されます。

ベスト・プラクティス

パッケージの検出や競合する依存関係の解決において発生する可能性がある問題を防ぐため、まず、テスト環境でノートブックを使用して必要なパッケージを手動でインストールします。 これにより、エラーなしでパッケージをインストールできるかどうかを対話式に確認できます。 パッケージがすべて正しくインストールされたことを確認したら、開発環境または実稼働環境のカスタマイズを作成し、パッケージをカスタマイズ・テンプレートに追加します。

親トピック: 環境のカスタマイズ