Pythonコネクタのインストール¶
このトピックでは、Python用Snowflakeコネクタをインストールする手順について説明します。コネクタは現在、Linux、 macOS、およびWindows環境にインストールできます。
開発者ノートは、ソースコードとともに GitHub でホストされています。
このトピックの内容:
前提条件¶
Snowflakeクライアントでサポートされているオペレーティングシステムのリストについては、 オペレーティングシステムのサポート をご参照ください。
Python用Snowflakeコネクタをインストールするには、次のソフトウェアパッケージが必要です。
Python¶
Python用Snowflakeコネクタには、Pythonバージョン3.7以降が必要です。
使用しているPythonのバージョンを確認するには、
python --version
必要なバージョンのPythonのインストールの詳細については、以下をご参照ください。
Pythonパッケージインストーラーと設定ツール¶
Python用Snowflakeコネクタは、標準のPythonパッケージインストーラーおよびマネージャーである pip
によってインストールされます。
pipバージョン19.0またはそれ以降を使用してください。次のコマンドを実行して、必要なバージョンがインストールされていることを確認します。
python -m pip install --upgrade pip
注釈
macOSで、
virtualenv
またはvenv
を使用してPythonとコネクタをインストールします。Python 2.7.xとPython 3.xの両方がインストールされている場合は、
pip3
を使用してPython 3.xでコネクタをインストールします。
Pythonパッケージ¶
Python用Snowflakeコネクタは、多くのPythonパッケージを使用します。コネクタは、各パッケージのさまざまなバージョンをサポートしています。(詳細については、 Pythonコネクタの依存関係管理ポリシー を参照。)
これらのパッケージについては、Snowflakeがテスト中に使用したのと同じバージョン(これらのパッケージでサポートされている最小バージョン)を使用することをお勧めします。固定された依存関係を上書きしたり、固定された依存関係を上書きする可能性のあるアプリケーションを使用したりしないこともお勧めします。
コネクタでテストされたパッケージバージョンは、 これらの要件ファイル に記載されています。各要件ファイルは、Pythonの特定のバージョンに適用されます。たとえば、 requirements_36.reqs
はPython 3.6でテストされたバージョンを一覧表示します。
各要件は、次のような行で構成されます。
asn1crypto==1.3.0
==
の左側の要素はパッケージの名前で、 ==
の右側の要素はパッケージのバージョン番号です。
これらの要件ファイルを使用して必要なパッケージをインストールする手順については、 ステップ1:コネクタをインストールする をご参照ください。
pyOpenSSL (macOS のみ)¶
macOS(Yosemite以上のバージョン)にはPython 2.7.xが含まれます。Python 2.7.xを使用中で、 pyOpenSSL
のバージョンが古い場合は、 virtualenv
を使用していないと、次のエラーが発生する可能性があります。
File "/Library/Python/2.7/site-packages/snowflake/connector/ocsp_pyopenssl.py", line nn, in dump_publickey bio = OpenSSL.crypto._new_mem_buf() AttributeError: 'module' object has no attribute '_new_mem_buf'
この問題を解決するには、次に挙げる2つのオプションのいずれかを使用します。
Pythonランタイム環境を分離するには、
virtualenv
またはvenv
を使用します。新しくインストールされた
pyOpenSSL
が代わりに使用されるように、 PYTHONPATH 環境変数を設定します。例:export PYTHONPATH=/Library/Python/2.7/site-packages
注釈
Pythonコネクタの最近および将来のバージョンは、Python 2.xをサポートしません。Python 2.7またそれ以前のバージョンのPythonコネクタをまだ使用している場合は、コネクタとPythonの両方をアップグレードすることをお勧めします。
OpenSSLおよびFFI(Linuxのみ)¶
Python用Snowflakeコネクタがインストールされると、 pip
はLinuxプラットフォーム上のパッケージのネイティブコードをコンパイルします。正常にインストールするには、必要なパッケージをインストールします。
CentOSには、
yum
を使用します。sudo yum install -y libffi-devel openssl-devel
Ubuntuには、
apt-get
を使用します。sudo apt-get install -y libssl-dev libffi-dev
他のプラットフォームはPythonパッケージにバンドルされているため、OSパッケージをインストールする必要はありません。
ステップ1:コネクタをインストールする¶
Python用Snowflakeコネクタは PyPI で利用可能です。サイトで変更ログを利用できるため、各リリースで実装された変更を確認できます。
Python用Snowflakeコネクタのバージョンをインストールする場合は、そのバージョンのコネクタでテストされた依存ライブラリのバージョンをインストールすることをお勧めします。
Python用Snowflakeコネクタと依存ライブラリをインストールするには、
インストールする予定のPython用Snowflakeコネクタのバージョンを確認します。
依存ライブラリをインストールするには、
pip
(またはpip3
)コマンドを実行し、そのバージョンのコネクタの 要件ファイル をポイントします。たとえば、Python用Snowflakeコネクタの最新バージョンが 2.9.0 で、現在Python 3.6 を使用しているとします。そのバージョンのコネクタの依存ライブラリをインストールするには、次のコマンドを実行します。
pip install -r https://raw.githubusercontent.com/snowflakedb/snowflake-connector-python/v2.9.0/tested_requirements/requirements_36.reqs
上記の例では、要件ファイルへのパスでコネクタのバージョン(「/v2.9.0/」)を指定しています。要件ファイル名(「requirements _36.reqs」)は、Pythonのバージョン(Python 3.6)を指定します。
注釈
Python用Snowflakeコネクタの2.2.0から2.3.5までのバージョンをインストールする必要がある場合は、要件ファイル名の
.reqs
を.txt
に置き換えます。たとえば、requirements_36.reqs
ではなくrequirements_36.txt
を使用します。pip
コマンドの実行がコンパイルエラーを返す場合は、 PyCryptoDome などの必要なモジュールをビルドするために、CコンパイラとPython開発パッケージのインストールが必要になる可能性があります。Cコンパイラのインストールの詳細については、http://gcc.gnu.org/(Linux)またはhttps://developer.apple.com/xcode/(macOS)をご参照ください。
コネクタをインストールするには、次のコマンドを実行します。
pip install snowflake-connector-python==<version>
ここで、
version
は、インストールするコネクタのバージョンです。たとえば、Python用Snowflakeコネクタのバージョン 2.9.0 をインストールするには、次のコマンドを実行します。
pip install snowflake-connector-python==2.9.0
注釈
接続キャッシュを使用して認証のプロンプト数を最小限に抑制 --- オプション 予定の場合は、
secure-local-storage
のエクストラもインストールする必要があります。詳細については、 接続キャッシュを使用して認証のプロンプト数を最小限に抑制 --- オプション をご参照ください。Pandas DataFrames の API サポートを使用する場合は、
pandas
のエクストラもインストールする必要があります。詳細については、 PythonコネクタでのPandas DataFrames の使用 をご参照ください。
ステップ2:インストールを確認する¶
次のPythonサンプルコードを含むファイル(例: validate.py
)を作成します。これは、Snowflakeに接続し、Snowflakeバージョンを表示します。
#!/usr/bin/env python import snowflake.connector # Gets the version ctx = snowflake.connector.connect( user='<user_name>', password='<password>', account='<account_identifier>' ) cs = ctx.cursor() try: cs.execute("SELECT current_version()") one_row = cs.fetchone() print(one_row[0]) finally: cs.close() ctx.close()
例を実行する前に、
<アカウント識別子>
を使用する アカウント識別子 に置き換えます。詳細と例については、 account パラメーターの使用上の注意(connect メソッドの場合) をご参照ください。
<ユーザー名>
と<パスワード>
を、Snowflakeへの接続に使用するユーザー名とパスワードに置き換えます。
Snowflake Python APIの詳細については、 Pythonコネクタ API、特に snowflake.connector
メソッド を参照して、サポートされているコネクタパラメーターの詳細を確認してください。
次に、サンプルコードを実行します。たとえば、 validate.py
という名前のファイルを作成した場合、
python validate.py
Snowflakeバージョン(例: 3.5.0
)が表示されます。
次のエラーメッセージが表示される場合は、Pythonインストールに適切なセキュリティ修正が含まれていない可能性があります。
ERROR: The ssl package installed with your Python package - version n.n.n - does not have the required security fixes. Upgrade to 3.6.0 or higher.
ステップ3:一時ディレクトリを指定する¶
Python用Snowflakeコネクタは、一時ディレクトリを使用して、ロードおよびアンロード用のデータ(PUT、 GET)、およびその他のタイプの一時データを保存します。
一時ディレクトリは、環境変数 TMPDIR
、 TEMP
または TMP
を設定することで明示的に指定できます。それ以外の場合は、オペレーティングシステムのデフォルトの一時ディレクトリ(つまり、 /tmp
、 C:\temp
)が使用されます。
システムのデフォルトの一時ディレクトリボリュームが処理中のデータに対して十分な大きさでない場合、サポートされている環境変数のいずれかを使用して別のディレクトリを指定する必要があります。
たとえば、ターミナルウィンドウから次のコマンドを実行します。
export TMPDIR=/large_tmp_volume