スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | page top↑
cx_OracleをWindowsに設定する
PythonからOracleに接続するために使われるライブラリはいくつかあるのかも知れませんが、cx_Oracleがデファクトスタンダードのようです。

Windowsだしバイナリ版もあるから、一瞬で設定できると思ったんですが、久しぶりにハマったのでメモっておきます。

まず、すこし調べて見ると、インストールの前に、Oracleが配布しているInstant Clientの設定が必要です。
なんかいろいろあるんですが、Basic、SQL*Plus、SDK、ODBCあたりを入れておけば十分かと思われます。入れすぎかも知れませんが、まあココはあまり問題ではありません。

ダウンロードしたzipファイルを解凍して、適当なディレクトリに放り込み、このディレクトリをWindowsの環境変数、ORACLE_HOMEに設定して、おなじくPATHにも追加します。PATHにだけ追加すればいいような気もしますが、これも特に問題ではありません。

設定出来たら、cx_Oracle-5.2.1-12c.win-amd64-py3.5.exeなど、Pythonのバージョンなど環境に合ったものを持ってきて、インストーラを普通に実行。Windows、バイナリあると楽だなと思ったんですが、これだとちゃんと入らない。

>>> import cx_Oracle
Traceback (most recent call last):
File "", line 1, in
ImportError: DLL load failed: The specified module could not be found.

と、なんとも愛想のない返答。環境変数の設定などを確認するも、原因不明なので、何でコケているのか調べることに。
ライブラリの依存関係を調べてくれる、Dependency Walkerなるものがあるようで、さそっく使って見ます。

本体は、site-packagesの中のcx_Oracle.cp35-win_amd64.pydなので、これをDependency Walkerで調べると、Oracleのoci.dllは読み込んでいるものの、oci.dllが依存するMSVCR100.DLLが無い!

なんて中途半端なんだ・・・と思いながら、調べるとよくあることらしい。MSのサイトから、持ってきて、設定後、cx_Oracleを再度インストールしたら、動くようになりました。

ちなみに、Macの場合、バイナリはありませんが、開発環境を整えれば、ここにあるように、すぐに入ります。

Windowsも中身UNIXにしちゃえばいいのに、と思った土曜の夕方でした。
スポンサーサイト
【2016/05/28 18:45】 | Python | トラックバック(0) | コメント(0) | page top↑
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。