python中cx_Oracle模組安裝遇到的問題與解決方法
安裝或使用cx_Oracle時,需要用到Oracel的連結庫,如libclntsh.so.10.1,否則會有各種各樣的錯誤資訊。
安裝Oracle Instant Client就可得到這個連結庫,避免安裝幾百兆之巨的Oracle Client。
軟體下載地址:
常見的錯誤和解決方法:
一.win32二進位制安裝
在windows下安裝cx_Oracle-5.0-10g.win32-py2.6.msi之後,匯入時,報DLL載入失敗的錯誤,如下:
IDLE 2.6.1
>>> import cx_Oracle
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cx_Oracle
ImportError: DLL load failed: 找不到指定的程式。
解決方法:
從Oracle站點下載instantclient-basic-win32-10.2.0.4.zip,解壓後,將其中的oci.dll檔案複製到python安裝目錄的Lib/site-packages下,如 C:/Python26/Lib/site-packages
二.linux下二進位制安裝
在linux_x86_64下,安裝cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm時報錯。
[[email protected] ~]# rpm -ivh cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
error: Failed dependencies:
libclntsh.so.10.1()(64bit) is needed by cx_Oracle-5.0.1-1.x86_64
解決方法:
從Oracle站點下載basic-10.2.0.4.0-linux-x86_64.zip到/opt目錄並解壓,會看到libclntsh.so.10.1在/opt/instantclient_10_2目錄中
設定環境變數
vi /root/.bash_profile
增加如下兩行:
export ORACLE_HOME=/opt/instantclient_10_2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
執行source /root/.bash_profile使改動生效
建立此連結庫的符號連結
cd $ORACLE_HOME
ln -s libclntsh.so.x.x libclntsh.so
重新安裝cx_Oracle
注意加--nodeps引數,否則還會報上述錯誤
[[email protected] ~]# rpm -ivh --nodeps cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
#5.0.3版本不用加--nodeps引數
三.linux下原始碼安裝
設定環境變數及符號連結如上,在linux_x86_64下原始碼安裝,執行python setup.py build,編譯時錯誤資訊如下:
Connection.c:1169: 警告:語句不起作用
Connection.c:1171: 錯誤:‘udt_Connection’ 沒有名為 ‘environment’ 的成員
Connection.c:1172: 警告:傳遞引數 1 (屬於 ‘Environment_CheckForError’)時在不相容的指標型別間轉換
Connection.c:1172: 警告:傳遞引數 2 (屬於 ‘Environment_CheckForError’)時在不相容的指標型別間轉換
Connection.c:1172: 錯誤:提供給函式 ‘Environment_CheckForError’ 的實參太多
Connection.c:1176: 錯誤:‘udt_Connection’ 沒有名為 ‘sessionHandle’ 的成員
解決方法:
5.0.3版本的未出現此錯誤,要注意ORACLE_HOME下要有include目錄,這個目錄中要有編譯需要的原始檔,原始檔在Oracle Instant Client這個客戶端中沒有包含。我是從windows客戶端的D:/oracle/product/10.2.0/client_1/oci/include這個目錄中拷貝的。
四.import錯誤
>>> import cx_Oracle
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libnnz10.so: cannot restore segment prot after reloc: Permission denied
>>> import cx_Oracle
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libclntsh.so.10.1: cannot restore segment prot after reloc: Permission denied
>>> import cx_Oracle
>>>
這是因為SELinux的限制,執行如下命令取消限制:
chcon -t texrel_shlib_t cd $ORACLE_HOME/libnnz10.so
chcon -t texrel_shlib_t cd $ORACLE_HOME/libclntsh.so.10.1
五、執行時錯誤
Traceback (most recent call last):
File "oracle_conn.py", line 9, in ?
connection = cx_Oracle.Connection(u"oracle/[email protected]")
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle
還是SELinux的限制,設定SELinux為disabled
關掉selinux:
執行命令: vim /etc/selinux/config
將selinux=enforcing或permissive改成disabled
執行命令: setenforce 0
六. UNICODE的安裝包有問題
Traceback (most recent call last):
File "./oracle_conn.py", line 22, in ?
folderIds=cursor.fetchmany(10)
cx_Oracle.DatabaseError: OCI-22061: Message 22061 not found; No message file for product=RDBMS, facility=OCI; arguments: [T
目前發現5.0.3版的包在執行SQL時會導致報錯,不建議使用,換成非UNICODE的包就沒問題了。
相關推薦
python中cx_Oracle模組安裝遇到的問題與解決方法
安裝或使用cx_Oracle時,需要用到Oracel的連結庫,如libclntsh.so.10.1,否則會有各種各樣的錯誤資訊。 安裝Oracle Instant Client就可得到這個連結庫,避免安裝幾百兆之巨的Oracle Client。 軟體下載
區分python中random模組的randint與numpy.random模組的randint
random.randint(a, b) # 返回閉區間 [a, b] 範圍內的整數值 numpy.random.randint(a, b) # 返回開區間 [a, b) 範圍內的整數值 >>> random.randint(0,1
【Python】區分python中random模組的randint與numpy.random模組的randint
這簡直就是python一個大坑random.randint(a, b) # 返回閉區間 [a, b] 範圍內的整數值numpy.random.randint(a, b) # 返回開區間 [a, b) 範圍內的整數值>>> random.randi
Python中的對象行為與特殊方法(一)對象的創建與銷毀
連接 繼承 並不會 參數 asa rac 方式 垃圾收集 shell Python中類調用__new__()類方法來創建實例,調用__init__()方法來初始化對象,對象的銷毀則調用__del__()方法。 __new__()方法第一個參數為類cls,通常返回cls的一個
python中 f.write寫入中文出錯解決方法
一個出錯的例子 #coding:utf-8 s = u'中文' f = open("test.txt","w") f.write(s) f.close() 原因是編碼方式錯誤,應該改為utf-8編碼 解決方案一: #coding:utf-8 s = u'中文' f
python中使用pip安裝報錯:Fatal error in launcher... 解決方法
python安裝了2和3版本在 cmd 中用pip報的錯誤為:Fatal error in launcher:Unable to create process using 這是因為你安裝了python3和python2在你的windows下,並且在環境變數中分別配置了pip,可是並沒有區分pip3還是p
python模組的介紹與使用方法,第三方模組的手動安裝!
什麼是Python模組: Python 模組(Module),是一個 Python 檔案,以 .py 結尾,包含了 Python 物件定義和Python語句。 模組讓你能夠有邏輯地組織你的 Python 程式碼段。
**python中atexit模組 與register函式**
python中atexit模組 與register函式 register函式函式模型: register函式的作用: register函式位於atexie模組,是程式結束時的退出清理函式 register函式的使用例子: 一:atexit.register(fu
Python中lxml模組的安裝
lxml是Python中與XML及HTML相關功能中最豐富和最容易使用的庫。lxml並不是Python自帶的包,而是為libxml2和libxslt庫的一個Python化的繫結。它與眾不同的地方是它兼
CentOS中redis以及python中redis模組的安裝
CentOS下redis的安裝 1.下載redis的安裝包 2.tar -zxfz redis-3.2.0.tar.gz 進行解壓 3.進入其安裝目錄底下 4.make安裝 5.啟動服務端
python中Jupyter Notebook庫的安裝及安裝失敗的解決方法學習
一、Jupyter notebook的認識Jupyter Notebook(此前被稱為 IPython notebook)是一個互動式筆記本,支援執行 40 多種程式語言。其本質是一個 Web 應用程式,它執行以網頁的形式存在,便於建立和共享文學化程式文件,支援實時程式碼,數
python中requests模組有些網站不能訪問解決方案
python學習中爬取網站視訊時由於python本身不能地址限制的原因,不能直接用response = requests.get(url)獲取到網頁原始碼,進而無法爬取網站資訊。 我以貓眼網為例: 訪問貓眼程式碼如下: import requests
解決python中argparse模組add_argument問題
這個東西,用於從命令列讀取引數。 用法: import argparse parser=argparse.ArgumentParser() parser.add_argument("echo",help="echo the string") args=parser.parse_args()
Python中第三方模組的安裝
1、自編寫模組 既然一個.py檔案即為一個模組,所以直接將自己編寫的Python模組檔案放入$Python\Lib資料夾內,便可以呼叫;如何解決模組搜尋路徑帶來的ImportError問題?請點這裡 2、第三方模組和包 下載第三方模組和包到本地,模組一
Python中 BeautifulSoup模組的安裝
ps:(/Python32--表示Python的安裝目錄 /setuptools -- 表示之前下載的setuptools安裝包的目錄名 / beautifulsoup4-4.4.0 --表示之前下載的beautifulsoup安裝包的目錄名 )請根據自己的實際情況更改
如何安裝Python中的模組
自我介紹 人家說我師出名門時,我笑了~我只說我是一個一直對女朋友好的人~專注機器學習、資料探勘3年;一直有深入理解資料結構的計劃;一直有攻克OJ題目的決心;一直對英語有著執著的信念;一直在實習NLP演算法工程師。。。
程式設計過程中遇到的python問題與解決方法_來自網路
1、python操作mysql中文顯示亂碼的解決方法 簡介: 已解決 http://www.jb51.net/article/56086.htm 2、自己程式設計中遇到的Python錯誤和解決方法彙
python中datetime模組中的strftime與strptime
python中datetime模組非常好用,提供了日期格式和字串格式相互轉化的函式strftime/strptime 1、由日期格式轉化為字串格式的函式為: datetime.datetime.strftime() 2、由字串格式轉化為日期格式的函式為: dateti
zabbix 監控平臺搭建過程中的報錯與解決方法總結
監控 zabbix 運維自動化1.php option post_max_size 2.php option max_execution_time 3.php option max_input_time 4.php time zone 5.php bcm
Nginx 安裝過程中遇到的一些問題及解決方法
requires nbsp margin req 命令 裝包 ... check sbin 一、安裝 獲取安裝包: wget http://nginx.org/download/nginx-1.11.5.tar.gz 解壓安裝包: tar -zxvf nginx-1.11