使用pip安裝 cx_Oracle 模塊


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的鏈接階段和執行階段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM