1. 程式人生 > >python cx_Oracle安裝 報錯,各種問題本人新手歸納一下,實際親測問題

python cx_Oracle安裝 報錯,各種問題本人新手歸納一下,實際親測問題

python是個好的小框架,搬來搬去都可以,通用性沒的說,不廢話了。

以前也沒少安裝過Python還有cx_Oracle,也沒遇到過啥問題,很順利的,乖乖最近拿新機器虛擬機器一安裝問題來了,都是各種報錯,論壇裡網上查,一個轉一個都TM的看著累死,沒一點用,誒

首先確認您的主機上有沒有Python,確認下版本就知道,一般的Linux只要不是純淨版,上面都自帶Python版本無論2.6 2.7都夠用了,python -V 看見結果就算完成了。

但是部分機器沒有開發包,安裝下Python開發包 yum install python-devel;網路通的情況下會自己下載內容,然後就完成了。

第二步確認主機上有沒有安裝ORACLE #echo $ORACLE_HOME如果打出一個目錄,那麼恭喜你#cd $ORACLE_HOME進去看一下,看看是客戶端簡版還是服務版,特別檢查$ORACLE_HOME/sdk/include目錄是否存在,還有lib、bin目錄,檢查要是都在的話執行下sqlplus如果看見輸入使用者名稱的提示符,那麼恭喜你,你可以直接解壓cx_Oracle(4-5版本都可以),解壓完成 python setup.py install 直接執行完,python  import cx_Oracle沒有報錯提示,就算裝完成了。

至於GCC沒有就自己安裝吧,這個不算是問題。

下面我來說一下我這裡遇到的報錯情況

python setup.py install 
running install
running build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/oracle/11.2/client64/rdbms/demo -I/usr/lib/oracle/11.2/client64/rdbms/public -I/usr/lib/oracle/11.2/client64/network/public -I/usr/lib/oracle/11.2/client64/sdk/include -I/usr/local/include/python2.7 -c cx_Oracle.c -o build/temp.linux-x86_64-2.7/cx_Oracle.o -DBUILD_TIME="June 21, 2017 18:42:39"
cx_Oracle.c:9:17: error: oci.h: No such file or directory
cx_Oracle.c:10:16: error: xa.h: No such file or directory
In file included from cx_Oracle.c:74:
Environment.c:11: error: expected specifier-qualifier-list before ‘OCIEnv’
Environment.c:22: error: expected declaration specifiers or ‘...’ before ‘sword’
In file included from Environment.c:53,
                 from cx_Oracle.c:74:
Error.c:11: error: expected specifier-qualifier-list before ‘sb4’
Error.c:28: error: ‘udt_Error’ has no member named ‘errorNumber’
Error.c:29: error: ‘udt_Error’ has no member named ‘errorText’
Error.c:30: error: ‘udt_Error’ has no member named ‘context’
Error.c: In function ‘Error_New’:
Error.c:82: error: ‘ub4’ undeclared (first use in this function)
Error.c:82: error: (Each undeclared identifier is reported only once
Error.c:82: error: for each function it appears in.)

看似很長的報錯下面還有很多很多,拿著報錯語句去百度,根本就是無解,我這裡的解決辦法呢很簡單,在我電腦上oracle目錄下找到OCI目錄,整個壓縮下複製到cx_OracleA安裝機器的$ORACLE_HOME下,把OCI改成sdk問題就也算好了。要不然就好好的把oracle全刪了,然後再一步一步安裝,記住不要圖方便下載官網的rpm包,下ZIP包解壓就好。
需要下載的包 基本只要下載jdbc basic sdk sqlplus 就可以了。