Python パッケージ情報の取得

適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance

この記事では、SQL Server 上の Machine Learning Services およびビッグ データ クラスターにインストールした Python パッケージのバージョンやインストール場所などの情報を取得する方法について説明します。 Python のスクリプト例では、インストール パスやバージョンなどのパッケージ情報を一覧表示する方法を示しています。

この記事では、SQL Server Machine Learning Services にインストールした Python パッケージのバージョンやインストール場所などの情報を取得する方法について説明します。 Python のスクリプト例では、インストール パスやバージョンなどのパッケージ情報を一覧表示する方法を示しています。

この記事では、Azure SQL Managed Instance の Machine Learning Services にインストールした Python パッケージのバージョンやインストール場所などの情報を取得する方法について説明します。 Python のスクリプト例では、インストール パスやバージョンなどのパッケージ情報を一覧表示する方法を示しています。

Python ライブラリの既定の場所

SQL Server と共に機械学習をインストールすると、インストールした言語ごとに 1 つのパッケージ ライブラリがインスタンス レベルで作成されます。 このインスタンス ライブラリは、SQL Server に登録されているセキュリティで保護されたフォルダーです。

SQL Server のデータベース内で実行されるすべてのスクリプトまたはコードは、このインスタンス ライブラリから関数を読み込む必要があります。 SQL Server は、他のライブラリにインストールされているパッケージにはアクセスできません。 これはリモート クライアントにも当てはまります。サーバーの計算のコンテキストで実行されているすべての Python コードは、インスタンス ライブラリにインストールされているパッケージしか使用できません。 既定のインスタンス ライブラリは、サーバーの資産を保護するために、コンピューターの管理者のみが変更できるようになっています。

Python のバイナリの既定のパスは次のとおりです。

C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES

既定の SQL インスタンスは、MSSQLSERVER と想定されています。 SQL Server がユーザー定義の名前付きインスタンスとしてインストールされている場合、代わりにその指定の名前を使用します。

Python のバイナリの既定のパスは次のとおりです。

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES

既定の SQL インスタンスは、MSSQLSERVER と想定されています。 SQL Server がユーザー定義の名前付きインスタンスとしてインストールされている場合、代わりにその指定の名前を使用します。

次の SQL コマンドを実行して、外部スクリプトを有効にします。

sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH override;

重要

Azure SQL Managed Instance 上で、sp_configure および RECONFIGURE コマンドを実行すると、SQL サーバーの再起動がトリガーされ、RG 設定が有効になります。 これにより、使用不可の状態が数秒間生じる可能性があります。

現在のインスタンスの既定のライブラリを確認する場合は、次の SQL ステートメントを実行します。 この例では、Python の sys.path 変数に含まれるフォルダーの一覧が返されます。 一覧には、現在のディレクトリと標準ライブラリ パスが含まれています。

EXECUTE sp_execute_external_script
  @language =N'Python',
  @script=N'import sys; print("\n".join(sys.path))'

変数 sys.path の詳細と、これを使用したモジュールのインタープリターの検索パスの設定方法については、モジュールの検索パスに関する記事を参照してください。

Note

pip または同様の方法を使用して、Python パッケージを SQL パッケージ ライブラリに直接インストールしないようにしてください。 SQL インスタンスにパッケージをインストールするには、代わりに sqlmlutils を使用します。 詳細については、「sqlmlutils を使用した Python パッケージのインストール」を参照してください。

既定の Microsoft Python パッケージ

セットアップ時に Python の機能を選択すると、SQL Server Machine Learning Services と共に次の Microsoft Python パッケージがインストールされます。

パッケージ Version 説明
revoscalepy 9.4.7 リモートでの計算のコンテキスト、ストリーミング、データのインポートと変換、モデリング、視覚化、および分析での rx 関数の並列実行で使用します。
microsoftml 9.4.7 Python に機械学習アルゴリズムを追加します。

含まれている Python のバージョンの詳細については、「Python および R のバージョン」を参照してください。

コンポーネントのアップグレード

既定で Python パッケージは、サービス パックと累積的な更新プログラムで更新されます。 その他のパッケージおよび Python のコア コンポーネントのバージョンの完全アップグレードは、製品のアップグレードによってのみ可能です。

既定のオープンソースの Python パッケージ

セットアップ時に Python の言語オプションを選択すると、(Python 3.5 に) Anaconda 4.2 のディストリビューションがインストールされます。 標準インストールには、Python のコード ライブラリに加え、サンプル データ、単体テスト、およびサンプル スクリプトが含まれます。

重要

SQL Server のセットアップでインストールされた Python のバージョンは、手動で Web 上の新しいバージョンに上書きしないでください。 Microsoft Python のパッケージは、特定のバージョンの Anaconda に基づいています。 インストールを変更すると、それが不安定になる可能性があります。

インストールされているすべての Python パッケージの一覧表示

次のスクリプトの例では、SQL Server インスタンスにインストールされているすべての Python パッケージの一覧を表示します。

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
import pkg_resources
import pandas
OutputDataSet = pandas.DataFrame(sorted([(i.key, i.version) for i in pkg_resources.working_set]))'
WITH result sets((Package NVARCHAR(128), Version NVARCHAR(128)));

1 つの Python パッケージの検索

インストールした Python パッケージが、特定の SQL Server インスタンスで使用できることを確認したい場合、ストアド プロシージャを実行してパッケージを検索し、メッセージが返されるようにします。

たとえば、次のコードでは scikit-learn パッケージが検索されます。 パッケージが見つかった場合、コードによりパッケージのバージョンが出力されます。

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
import pkg_resources
pkg_name = "scikit-learn"
try:
    version = pkg_resources.get_distribution(pkg_name).version
    print("Package " + pkg_name + " is version " + version)
except:
    print("Package " + pkg_name + " not found")
'

結果:

STDOUT message(s) from external script: Package scikit-learn is version 0.20.2

Python のバージョンの表示

次のコード例では、SQL Server のインスタンスにインストールされている Python のバージョンを返します。

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
import sys
print(sys.version)
'

次のステップ