快速入門cx_Oracle安裝
-
如果尚未安裝,請安裝Python 3。在macOS上,您必須始終安裝自己的Python。
cx_Oracle 8支持Python 3.5和更高版本。如果使用Python 2,則將安裝較舊的cx_Oracle 7.3。
-
通過以下方式從PyPI安裝cx_Oracle :
python -m pip install cx_Oracle --upgrade
注意:如果您的平台不提供二進制車輪軟件包,則將下載源軟件包。這將被編譯並安裝生成的二進制文件。
--user
如果您無權寫入系統目錄,則該選項可能很有用:python -m pip install cx_Oracle --upgrade --user
如果您在代理后面,則將代理服務器添加到命令中,例如add
--proxy=http://proxy.example.com:80
-
將Oracle 19、18、12或11.2客戶端庫添加到操作系統庫搜索路徑,例如
PATH
Windows或LD_LIBRARY_PATH
Linux。init_oracle_client()
在您的應用程序中使用macOS傳遞Oracle客戶端目錄名稱時,請參閱查找Oracle客戶端庫。在Windows上也可以使用。獲取庫:
-
如果數據庫位於遠程計算機上,則從免費的Oracle Instant Client “ Basic”或“ Basic Light”軟件包中下載並解壓縮客戶端庫,以用於您的操作系統體系結構。
Windows上的Instant Client需要適當的Microsoft Windows Redistributable,請參閱在Windows上安裝cx_Oracle。在Linux上,需要
libaio
(有時稱為libaio1
)軟件包。Oracle Linux 8也需要該libnsl
軟件包。 -
或者,使用本地安裝的數據庫中已有的客戶端庫,例如免費的Oracle Database Express Edition(“ XE”) 版本。
版本19、18和12.2客戶端庫可以連接到Oracle Database 11.2或更高版本。12.1版客戶端庫可以連接到Oracle Database 10.2或更高版本。11.2版客戶端庫可以連接到Oracle Database 9.2或更高版本。
-
-
創建一個類似於以下腳本的腳本:
# myscript.py import cx_Oracle # Connect as user "hr" with password "welcome" to the "orclpdb1" service running on this computer. connection = cx_Oracle.connect("hr", "welcome", "localhost/orclpdb1") cursor = connection.cursor() cursor.execute(""" SELECT first_name, last_name FROM employees WHERE department_id = :did AND employee_id > :eid""", did = 50, eid = 190) for fname, lname in cursor: print("Values:", fname, lname)
找到您的Oracle數據庫用戶名和密碼,以及數據庫連接字符串。連接字符串通常采用以下格式
hostname/servicename
:使用運行數據庫的主機名和使用Oracle數據庫實例的服務名。將您的用戶名,密碼和連接字符串替換為代碼。運行Python腳本,例如:
python myscript.py
您可以從API文檔 和示例中學習如何使用cx_Oracle 。
如果您遇到安裝問題,請查看“故障排除”部分。
Oracle客戶端和Oracle數據庫的互操作性
cx_Oracle需要Oracle客戶端庫。這些庫提供了訪問Oracle數據庫實例所需的網絡連接。它們還為cx_Oracle提供基本和高級的連接管理和數據功能。
獲取Oracle客戶端庫的最簡單方法是安裝免費的 Oracle Instant Client “基本”或“基本輕”軟件包。這些庫也可以在任何Oracle數據庫安裝或完整的Oracle Client安裝中使用。
Oracle的標准客戶端-服務器網絡互操作性允許在不同版本的Oracle客戶端庫和Oracle數據庫之間建立連接。有關認證的配置,請參見Oracle支持的 Doc ID 207303.1。總之,Oracle Client 19、18和12.2可以連接到Oracle Database 11.2或更高版本。Oracle Client 12.1可以連接到Oracle Database 10.2或更高版本。Oracle Client 11.2可以連接到Oracle Database 9.2或更高版本。創建連接的技術限制可能更加靈活。例如,Oracle Client 12.2可以成功連接到Oracle Database 10.2。
cx_Oracle使用每個受支持平台上可用的共享庫加載機制在運行時加載Oracle Client庫。無需為不同版本的庫重建它。由於單個cx_Oracle二進制文件可以使用不同的客戶端版本,並且還可以訪問多個數據庫版本,因此在預期的發行環境中對應用程序進行測試非常重要。較新的Oracle客戶端支持新功能,例如12.1或更高版本的客戶端可用的oraaccess.xml外部配置文件,會話池改進,改進的高可用性功能,呼叫超時和其他增強功能。
cx_Oracle函數clientversion()
可用於確定使用哪個Oracle Client版本,該屬性 Connection.version
可用於確定連接正在訪問哪個Oracle數據庫版本。然后可以使用它們來相應地調整應用程序行為。嘗試使用某些特定的客戶機/服務器組合不支持的Oracle功能可能會導致運行時錯誤。這些包括:
- 嘗試訪問當前Oracle客戶端庫不支持的屬性時,將收到錯誤消息“ ORA-24315:非法屬性類型”
- 嘗試將針對Oracle Database 12c的Oracle Client 11.2使用隱式結果時,會出現錯誤“ ORA-29481:隱式結果無法返回給客戶端”
- 嘗試使用Oracle Client 11.2獲取數組DML行計數時,您將收到錯誤“ DPI-1050:Oracle Client庫必須為12.1版或更高版本”
在Linux上安裝cx_Oracle
本節討論Linux上的常規安裝方法。要在Oracle Linux上使用yum的Python和cx_Oracle RPM軟件包,請參閱在Oracle Linux上安裝cx_Oracle RPM。
安裝cx_Oracle
在Linux上安裝cx_Oracle的通用方法是使用Python的Pip軟件包從PyPI安裝cx_Oracle :
python -m pip install cx_Oracle --upgrade
--user
如果您無權寫入系統目錄,則該選項可能很有用:
python -m pip install cx_Oracle --upgrade --user
如果您在代理后面,則將代理服務器添加到命令中,例如add --proxy=http://proxy.example.com:80
如果您的體系結構可用,它將下載並安裝預編譯的二進制文件。如果沒有預編譯的二進制文件,則將下載,編譯源文件並安裝生成的二進制文件。編譯cx_Oracle需要Python.h
頭文件。如果使用默認python
軟件包,則此文件位於python-devel
軟件包或等效文件中。
安裝Oracle客戶端
使用cx_Oracle要求安裝Oracle客戶端庫。這些提供了必要的網絡連接性,從而允許cx_Oracle訪問Oracle數據庫實例。
- 如果您的數據庫位於遠程計算機上,請 為您的操作系統體系結構下載免費的Oracle Instant Client “ Basic”或“ Basic Light”軟件包。根據您的喜好使用RPM或ZIP軟件包。
- 或者,使用本地安裝的數據庫中已有的客戶端庫,例如免費的Oracle Database Express Edition(“ XE”) 版本。
Oracle Instant Client Zip文件
要將cx_Oracle與Oracle Instant Client zip文件一起使用:
-
下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” zip文件:64位 或32位,與您的Python體系結構匹配。
建議使用最新版本。Oracle Instant Client 19將連接到Oracle Database 11.2或更高版本。
-
將軟件包解壓縮到應用程序可訪問的單個目錄中。例如:
mkdir -p /opt/oracle cd /opt/oracle unzip instantclient-basic-linux.x64-19.6.0.0.0dbru.zip
-
libaio
使用sudo或以root用戶身份安裝軟件包。例如:sudo yum install libaio
在某些Linux發行版中,此軟件包被稱為
libaio1
。在最新的Linux版本(例如Oracle Linux 8)上,您可能還需要安裝該
libnsl
軟件包。 -
如果計算機上沒有其他會受影響的Oracle軟件,則將Instant Client永久添加到運行時鏈接路徑。例如,使用sudo或以root用戶身份:
sudo sh -c "echo /opt/oracle/instantclient_19_6 > /etc/ld.so.conf.d/oracle-instantclient.conf" sudo ldconfig
或者,將環境變量設置
LD_LIBRARY_PATH
為Instant Client版本的適當目錄。例如:export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_6:$LD_LIBRARY_PATH
-
如果使用可選的Oracle配置文件,如
tnsnames.ora
,sqlnet.ora
或oraaccess.xml
與即時客戶端,然后將文件放在一個可訪問的目錄中,例如在/opt/oracle/your_config_dir
。然后使用:import cx_Oracle cx_Oracle.init_oracle_client(config_dir="/home/your_username/oracle/your_config_dir")
或將環境變量
TNS_ADMIN
設置為該目錄名稱。或者,將文件放在
network/admin
Instant Client的子目錄中,例如在中/opt/oracle/instantclient_19_6/network/admin
。這是與此即時客戶端鏈接的可執行文件的默認Oracle配置目錄。
Oracle Instant Client RPM
要將cx_Oracle與Oracle Instant Client RPM一起使用:
-
下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” RPM:64位 或32位,與您的Python體系結構匹配。
Oracle的百勝服務器的Oracle Linux的7即時客戶端的RPM ,並為Oracle Linux 6的即時客戶端的RPM ,可以無需點擊后進行下載。
建議使用最新版本。Oracle Instant Client 19將連接到Oracle Database 11.2或更高版本。
-
以sudo或以root用戶身份安裝下載的RPM。例如:
sudo yum install oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
Yum將自動安裝所需的依賴項,例如
libaio
。在最新的Linux版本(例如Oracle Linux 8)上,您可能需要手動安裝該
libnsl
軟件包。 -
對於Instant Client 19,在安裝過程中會自動配置系統庫搜索路徑。
對於較舊的版本,如果計算機上沒有其他會受影響的Oracle軟件,則將Instant Client永久添加到運行時鏈接路徑。例如,使用sudo或以root用戶身份:
sudo sh -c "echo /usr/lib/oracle/18.3/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf" sudo ldconfig
或者,對於版本18和更早版本,每個運行Python的外殼都需要將環境變量
LD_LIBRARY_PATH
設置為Instant Client版本的適當目錄。例如:export LD_LIBRARY_PATH=/usr/lib/oracle/18.3/client64/lib:$LD_LIBRARY_PATH
-
如果使用可選的Oracle配置文件,如
tnsnames.ora
,sqlnet.ora
或oraaccess.xml
與即時客戶端,然后將文件放在一個可訪問的目錄中,例如在/opt/oracle/your_config_dir
。然后使用:import cx_Oracle cx_Oracle.init_oracle_client(config_dir="/opt/oracle/your_config_dir")
或將環境變量
TNS_ADMIN
設置為該目錄名稱。或者,將文件放在
network/admin
Instant Client的子目錄中,例如在中/usr/lib/oracle/19.6/client64/lib/network/admin
。這是與此即時客戶端鏈接的可執行文件的默認Oracle配置目錄。
本地數據庫或完整的Oracle客戶端
cx_Oracle應用程序可以使用本地Oracle數據庫中的Oracle Client 19、18、12或11.2庫,也可以使用完整的Oracle Client安裝。
這些庫必須是32位或64位,與您的Python體系結構匹配。
-
通過運行Oracle環境腳本來設置必需的Oracle環境變量。例如:
source /usr/local/bin/oraenv
對於Oracle Database Express Edition(“ XE”)11.2,運行:
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
-
可選Oracle配置文件,如
tnsnames.ora
,sqlnet.ora
或oraaccess.xml
可以放置在$ORACLE_HOME/network/admin
。或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然后將環境變量
TNS_ADMIN
設置為該目錄名稱。
在Oracle Linux上安裝cx_Oracle RPM
可從Oracle Linux yum服務器獲得Python和cx_Oracle RPM軟件包。易於安裝各種版本的Python。使用yum服務器可以輕松保持最新狀態。
在Windows上安裝cx_Oracle
安裝cx_Oracle
使用Python的Pip 軟件包從PyPI安裝cx_Oracle :
python -m pip install cx_Oracle --upgrade
如果您位於代理服務器后面,請指定代理服務器:
python -m pip install cx_Oracle --proxy=http://proxy.example.com:80 --upgrade
如果您的體系結構可用,它將下載並安裝預編譯的二進制文件。如果沒有預編譯的二進制文件,則將下載,編譯源文件並安裝生成的二進制文件。
安裝Oracle客戶端
使用cx_Oracle要求安裝Oracle客戶端庫。這些提供了必要的網絡連接性,從而允許cx_Oracle訪問Oracle數據庫實例。支持Oracle客戶端版本19、18、12和11.2。
- 如果您的數據庫位於遠程計算機上,請 為您的操作系統體系結構下載免費的Oracle Instant Client “ Basic”或“ Basic Light”軟件包。
- 或者,使用本地安裝的數據庫中已有的客戶端庫,例如免費的Oracle Database Express Edition(“ XE”) 版本。
Oracle Instant Client Zip文件
要將cx_Oracle與Oracle Instant Client zip文件一起使用:
-
下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” zip文件:64位 或32位,與您的Python體系結構匹配。
建議使用最新版本。Oracle Instant Client 19將連接到Oracle Database 11.2或更高版本。
Windows 7用戶:請注意,Windows 7不支持Oracle 19c。
-
將軟件包解壓縮到應用程序可訪問的目錄中。例如解壓縮
instantclient-basic-windows.x64-19.6.0.0.0dbru.zip
到C:\oracle\instantclient_19_6
。 -
有幾種其他方法可以告訴cx_Oracle Oracle Client庫在哪里,請參見cx_Oracle 8初始化。
-
借助Oracle Instant Client,您可以
init_oracle_client()
在應用程序中使用,例如:import cx_Oracle cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_6")
請注意,使用“原始”字符串是因為路徑中會出現反斜杠。
-
或者,將Oracle Instant Client目錄添加到
PATH
環境變量。該目錄必須出現在PATH
任何其他Oracle目錄之前。重新啟動所有打開的命令提示符窗口。 -
另一種設置方法
PATH
是使用批處理文件在Python執行之前對其進行設置,例如:REM mypy.bat SET PATH=C:\oracle\instantclient_19_6;%PATH% python %*
每次您要運行Python時都調用此批處理文件。
-
-
Oracle Instant Client庫需要使用64位或32位體系結構可再發行的Visual Studio,以匹配Instant Client的體系結構。每個Instant Client版本都需要一個不同的可再發行版本:
- 對於Instant Client 19,請安裝VS 2017。
- 對於Instant Client 18或12.2,請安裝VS 2013
- 對於Instant Client 12.1,請安裝VS 2010
- 對於Instant Client 11.2,請安裝VS 2005 64位或VS 2005 32位
-
如果使用可選的Oracle配置文件,如
tnsnames.ora
,sqlnet.ora
或oraaccess.xml
與即時客戶端,然后將文件放在一個可訪問的目錄中,例如在C:\oracle\your_config_dir
。然后使用:import cx_Oracle cx_Oracle.init_oracle_client(config_dir=r"C:\oracle\your_config_dir")
或將環境變量
TNS_ADMIN
設置為該目錄名稱。或者,將文件放在
network\admin
Instant Client的子目錄中,例如在中C:\oracle\instantclient_19_6\network\admin
。這是與此即時客戶端鏈接的可執行文件的默認Oracle配置目錄。
本地數據庫或完整的Oracle客戶端
cx_Oracle應用程序可以使用本地Oracle數據庫或完整的Oracle Client中的Oracle Client 19、18、12或11.2庫。
Oracle庫必須是32位或64位,與您的Python體系結構匹配。
-
設置環境變量
PATH
以包含包含的路徑OCI.DLL
(如果尚未設置)。重新啟動所有打開的命令提示符窗口。
-
可選的Oracle配置文件,如
tnsnames.ora
,sqlnet.ora
或oraaccess.xml
可以放置在network\admin
Oracle數據庫軟件安裝目錄的子目錄。或者, 如上一節中所示傳遞
config_dir
到init_oracle_client()
,或設置TNS_ADMIN
為目錄名稱。
在macOS上安裝cx_Oracle
安裝Python
確保您沒有使用捆綁的Python。這些具有有限的權利,並且將無法加載Oracle客戶端庫。而是使用 Homebrew或Python.org。
注意macOS 10.15 Catalina不支持Instant Client 19及更早版本。您將需要允許從“安全性和隱私”首選項窗格訪問多個Instant Client庫。
安裝cx_Oracle
使用Python的Pip 軟件包從PyPI安裝cx_Oracle :
python -m pip install cx_Oracle --upgrade
--user
如果您無權寫入系統目錄,則該選項可能很有用:
python -m pip install cx_Oracle --upgrade --user
如果您在代理后面,則將代理服務器添加到命令中,例如add --proxy=http://proxy.example.com:80
將下載,編譯源代碼,並安裝生成的二進制文件。
安裝Oracle Instant Client
cx_Oracle需要Oracle客戶端庫,可在macOS的Oracle Instant Client中找到。這些提供了必要的網絡連接性,從而允許cx_Oracle訪問Oracle數據庫實例。
要將cx_Oracle與Oracle Instant Client zip文件一起使用:
-
從此處下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” zip文件。選擇與您的Python體系結構匹配的64位或32位軟件包。
建議使用最新版本。Oracle Instant Client 19將連接到Oracle Database 11.2或更高版本。
-
將軟件包解壓縮到應用程序可訪問的單個目錄中。例如,在終端中,您可以將您的主目錄解壓縮:
cd ~ unzip instantclient-basic-macos.x64-19.3.0.0.0dbru.zip
這將創建一個目錄
/Users/your_username/instantclient_19_3
。 -
有幾種其他方法可以告訴cx_Oracle Oracle Instant Client庫在哪里,請參見cx_Oracle 8初始化。
-
您可以
init_oracle_client()
在您的應用程序中使用:import cx_Oracle cx_Oracle.init_oracle_client(lib_dir="/Users/your_username/instantclient_19_3")
-
或者,使用cx_Oracle模塊二進制文件找到目錄,並將Oracle Instant Client鏈接或復制到該目錄。例如,如果您
--user
在Python 3.8中安裝了cx_Oracle ,則cx_Oracle.cpython-38-darwin.so
可能在中~/Library/Python/3.8/lib/python/site-packages
。然后,您可以運行 或將Instant Client庫復制到該目錄。ln -s ~/instantclient_19_3/libclntsh.dylib ~/Library/Python/3.8/lib/python/site-packages
-
另外,您可以設置
DYLD_LIBRARY_PATH
到包含Oracle Instant Client的目錄,但是需要在每個調用Python的終端或進程中進行設置。該變量將不會傳播到子外殼。 -
或者,在舊版本的macOS上,您可以添加鏈接
$HOME/lib
或/usr/local/lib
使應用程序能夠找到Instant Client。如果lib
子目錄不存在,則可以創建它。例如:mkdir ~/lib ln -s ~/instantclient_19_3/libclntsh.dylib ~/lib/
除了鏈接,您可以復制所需的OCI庫。例如:
mkdir ~/lib cp ~/instantclient_19_3/{libclntsh.dylib.19.1,libclntshcore.dylib.19.1,libnnz19.dylib,libociei.dylib} ~/lib/
對於Instant Client 11.2,必須復制OCI庫。例如:
mkdir ~/lib cp ~/instantclient_11_2/{libclntsh.dylib.11.1,libnnz11.dylib,libociei.dylib} ~/lib/
-
-
如果您使用可選的Oracle配置文件(例如
tnsnames.ora
)sqlnet.ora
或oraaccess.xml
與Oracle Instant Client一起使用,則將文件放在可訪問的目錄中,例如/Users/your_username/oracle/your_config_dir
。然后使用:import cx_Oracle cx_Oracle.init_oracle_client(config_dir="/Users/your_username/oracle/your_config_dir")
或將環境變量
TNS_ADMIN
設置為該目錄名稱。或者,將文件放在
network/admin
Oracle Instant Client的子目錄中,例如在中/Users/your_username/instantclient_19_3/network/admin
。這是與此即時客戶端鏈接的可執行文件的默認Oracle配置目錄。
在沒有Internet訪問的情況下安裝cx_Oracle
要在未連接到互聯網的計算機上安裝cx_Oracle,請從PyPI下載相應的cx_Oracle文件。將此文件傳輸到脫機計算機並使用以下方法安裝:
python -m pip install "<file_name>"
然后,按照通用的cx_Oracle平台安裝說明來安裝Oracle客戶端庫。
使用GitHub安裝
為了使用GitHub上的源代碼進行安裝,請使用以下命令:
git clone https://github.com/oracle/python-cx_Oracle.git cx_Oracle cd cx_Oracle git submodule init git submodule update python setup.py install
請注意,如果您直接從GitHub下載源zip文件,則還需要下載ODPI-C源zip文件並將其解壓縮到名為“ odpi”的目錄中。
也可以從oss.oracle.com獲得cx_Oracle源代碼。可以使用以下方法克隆:
git clone git://oss.oracle.com/git/oracle/python-cx_Oracle.git cx_Oracle cd cx_Oracle git submodule init git submodule update
從舊版本升級
查看發行說明是否過時並修改任何受影響的代碼。
如果要從cx_Oracle 7升級,請注意以下更改:
- 現在,cx_Oracle 8使用的默認字符集為“ UTF-8”。此外,
NLS_LANG
環境變量的字符集組件也將被忽略。如果需要更改字符集,則在創建連接或連接池時傳遞encoding
和nendcoding
參數。請參閱字符集和全球化。type(var)
需要的任何用途都應更改為var.type
。- 任何需要的使用都需要更改為
var.type is not None
isinstance(var.type, cx_Oracle.ObjectType)
- 請注意,列現在將被報告為 而不是 在。
TIMESTAMP WITH TIME ZONE
cx_Oracle.DB_TYPE_TIMESTAMP_TZ
cx_Oracle.TIMESTAMP
Cursor.description
- 請注意,列現在將被報告為而不是 在。
TIMESTAMP WITH LOCAL TIME ZONE
cx_Oracle.DB_TYPE_TIMESTAMP_LTZ
cx_Oracle.TIMESTAMP
Cursor.description
- 請注意,
BINARY_FLOAT
列現在將被報告為cx_Oracle.DB_TYPE_BINARY_FLOAT
而不是cx_Oracle.NATIVE_DOUBLE
在Cursor.description
。
如果要從cx_Oracle 5升級,請注意以下安裝更改:
- 使用Oracle Instant Client時,不應設置
ORACLE_HOME
。- 在Linux上,cx_Oracle 6和更高版本不再自動使用Instant Client RPM。您必須設置
LD_LIBRARY_PATH
或用於ldconfig
查找Oracle客戶端庫。- PyPI不再允許托管Windows安裝程序或Linux RPM。請改用提供的cx_Oracle Wheels,或使用Oracle的RPM,請參閱在Oracle Linux上安裝cx_Oracle RPM。
在Python 2中安裝cx_Oracle
cx_Oracle 7.3是支持Python 2的最新版本。
如果使用上面提供的命令在Python 2中安裝cx_Oracle,則將安裝cx_Oracle 7.3。這等效於使用如下命令:
python -m pip install cx_Oracle==7.3 --upgrade --user
有關其他安裝選項(例如通過代理安裝),請參閱上面的說明。確保Oracle Client庫在系統庫搜索路徑中,因為cx_Oracle 7不支持該 cx_Oracle.init_oracle_client()
方法,並且不支持從包含cx_Oracle模塊二進制文件的目錄中加載Oracle Client庫。
安裝cx_Oracle 5.3
如果您需要cx_Oracle 5.3,請從PyPI下載Windows安裝程序或用於從源代碼安裝。python -m pip install cx-oracle==5.3
可以在SourceForce的“文件”部分中找到非常舊的cx_Oracle版本 。
故障排除
如果安裝失敗:
-v
與pip一起使用選項。查看輸出和日志。嘗試使用其他方法進行安裝。谷歌任何看起來像一個錯誤。 嘗試一些潛在的解決方案。- 網絡連接錯誤嗎?您是否需要設置環境變量
http_proxy
和/或https_proxy
?還是嘗試?pip install --proxy=http://proxy.example.com:80 cx_Oracle --upgrade
- 如果升級沒有錯誤,但仍安裝了舊版本,請嘗試
pip install cx_Oracle --upgrade --force-reinstall
- 如果您無權修改Python的系統版本,可以使用 還是venv?
pip install cx_Oracle --upgrade --user
- 您是否收到錯誤“ ”?pip模塊內置於Python,但有時會被操作系統刪除。請使用venv模塊(內置於Python 3.x)或virtualenv模塊。
No module named pip
- 從源代碼構建時是否得到錯誤“ ”?確保源安裝中有一個包含文件的名為“ odpi”的子目錄。如果缺少,請查看“使用GitHub安裝”部分。
fatal error: dpi.h: No such file or directory
如果使用cx_Oracle失敗:
- 您是否收到錯誤“ ”?
DPI-1047: Oracle Client library cannot be loaded
- 檢查Python,cx_Oracle和Oracle Client庫都是64位還是32位。該
DPI-1047
消息將告訴您Python是否需要64位或32位Oracle Client。- 在Windows上,如果您使用過
init_oracle_client()
並且具有完整的數據庫安裝,請確保該數據庫是當前配置的數據庫。- 在Windows上,如果您沒有使用
init_oracle_client()
,則重新啟動命令提示符,並使用來檢查環境變量在所有其他Oracle目錄之前是否列出了正確的Oracle Client。set PATH
- 在Windows上,使用
DIR
命令驗證OCI.DLL
傳遞到init_oracle_client()
或在中設置的目錄中是否存在PATH
。- 在Windows上,檢查是否已安裝正確的Windows Redistributable。
- 在Linux上,檢查
LD_LIBRARY_PATH
環境變量是否包含Oracle Client庫目錄。如果使用的是Oracle Instant Client,則首選方法是確保/etc/ld.so.conf.d
目錄中的文件 包含Instant Client目錄的路徑,然后運行ldconfig
。- 在macOS上,確保未使用捆綁的Python(改為使用Homebrew或Python.org)。如果不使用
init_oracle_client()
,則將Oracle Instant Client庫放在~/lib
或中/usr/local/lib
。- 如果顯示“ ”,請檢查安裝要求。cx_Oracle需要Oracle客戶端庫11.2或更高版本。請注意,Windows 7不支持版本19。以上所示的類似步驟可能會有所幫助。
DPI-1072: the Oracle Client library version is unsupported
DPI-1047
- 如果安裝了多個版本的Python,請確保使用正確的python和pip(或python3和pip3)可執行文件。