1. 系統環境,linux, python3.5, pip
如下命令的執行均使用root用戶。
2. 執行 pip install cx_Oracle
出錯,提示不能定位Oracle的安裝。出現該問題的緣由是由於沒有安裝Oracle客戶端相關的庫文件。
下載文件:instantclient-basic-linux.x64-12.1.0.2.0.zip
下載連接:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
3. 解壓下載到的文件,假設解壓到 /opt/instantclient_12_1/ 這個目錄
設置環境變量:export ORACLE_HOME=/opt/instantclient_12_1/
再次執行 pip install cx_Oracle
出錯,提示編譯過程未找到 oci.h 這個頭文件。
4. 下載文件:instantclient-sdk-linux.x64-12.1.0.2.0.zip
下載連接:一致
解壓下載到的文件,假設仍然解壓到 /opt/instantclient_12_1/
5. 添加頭文件的搜索路徑:
export C_INCLUDE_PATH=/opt/instantclient_12_1/sdk/include/
再次執行:pip install cx_Oracle
編譯成功,連接出錯,提示 cannot find -lclntsh
6. 添加庫搜索路徑
export LD_LIBRARY_PATH=/opt/instantclient_12_1/
再次執行 pip install cx_Oracle
依然提示未找到
猜想是名稱問題,因而創建符號連接:
ln -s /opt/instantclient_12_1/libclntsh.so.12.1 /opt/instantclient_12_1/libclntsh.so
再次執行 pip install cx_Oracle
安裝成功。
7. 另開一個 terminal,在 python 中執行 import cx_Oracle 提示未找到共享庫。
應該是以前設置的環境變量失效了,故修改用戶的配置文件:~/.bashrc
在裏面加一行:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/instantclient_12_1/
8. 配置完成
0. 總結:
使用 pip 安裝 cx_Oracle 的過程當中要 檢測 instantclient,編譯源碼,進行安裝。
其中環境變量 ORACLE_HOME 用於表示 instantclient 的安裝位置,
C_INCLUDE_PATH 供 gcc 查找 頭文件的路徑,
LD_LIBRARY_PATH 用於 cx_Oracle的連接階段和執行階段。
html