環境:
win7 32位系統
Python3.6 (32bit)
安裝模塊:
cx_Oracle模塊下載(下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_oracle)
如是在網站上下載,切記需下載和python版本對應的.因為我之前在64位系統安裝時,一直用的是cx_Oracle-5.3+oci12c-cp36-cp36m-win_amd64.whl此文件,故此次安裝時就下載了對應32位系統的cx_Oracle‑5.3+oci12c‑cp36‑cp36m‑win32.whl.
使用pip install path 安裝,path是該文件的所在路徑
Oracle客戶端 instantclient_12_1(下載地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html)
因為cx_Oracle文件下載的是cx_Oracle‑5.3+oci12c‑cp36‑cp36m‑win32.whl,對應的是32位且版本為12的
將下載的instantclient-basic-nt-12.1.0.2.0文件中的 oci.dll oraociei12.dll和oraocci12.dll三個文件拷貝到python安裝路徑(例如我自己D:\soft\Python36\Lib\site-packages)下.
問題
在IDLE中運行
1 import cx_Oracle
報錯:ImportError: DLL load failed:找不到指定的模塊
出現此問題的原因一般是:沒有copy 之前提到的oci.dll文件或者是Oracle客戶端版本與cx_Oracle版本不一致
而我已經copy了oci.dll文件。而且就文件名稱判斷來二者版本是一致的
我測試了所有12版本的Oracle客戶端,包括64位,均沒有成功。(測試64位的時候報錯:ImportError: DLL load failed: %1 不是有效的 Win32 應用程序,意思是操作系統、cx_Oracle和instantclient的位數不同,當時實在是想不到別的辦法,就各種嘗試)
后來意識到或許是cx_Oracle的問題。。。
解決辦法
在cmd中運行
pip install -U cx_Oracle
更新cx_Oracle模塊到最新版本,問題解決。