无法加载Python cx_Oracle客户端库

时间:2017-07-20 22:01:42

标签: python oracle

我正在尝试连接到Oracle数据库,但是python脚本找不到cx_Oracle。这是我的剧本:

import cx_Oracle
con = cx_Oracle.connect(‘DBNAME/testitout@www.xx.yy.zz:1521/yeppers’)
print(con.version)
con.close()

这是我得到的错误:

================= RESTART: C:\Python35\Connect_To_Oracle.py =================
Traceback (most recent call last):
  File "C:\Python35\Connect_To_Oracle.py", line 1, in <module>
   import cx_Oracle
cx_Oracle.DatabaseError: DPI-1047: Oracle Client library cannot be loaded: The specified module could not be found. See https://oracle.github.io/odpi/doc/installation.html for help

这是我的操作系统和版本信息:

  • Intel Xeon CPU E7-4870 @ 2.40GHz
  • Windows Server 2008 R2 Enterprise
  • Python 3.5

以下是我安装cx_Oracle所做的工作:

1. Download Instant Client (Basic Client) from Oracle here : http://www.oracle.com/technetwork/topics/winx64soft-089540.html .
2. Unzip.
3. I added a new System Variable called ORACLE_HOME and pointed it to c:\Down\InstantClient , which is where I unzipped the above.  This is what I downloaded: instantclient-basic-windows.x64-12.2.0.1.0
4. You have to download the whl file from here: https://pypi.python.org/pypi/cx_Oracle/  To do this, you need to know your version of Python and your type of processor.  
5. You download into the scripts folder and then run pip install wheelfilename.whl

有人可以让我知道他们认为错误源于什么?

4 个答案:

答案 0 :(得分:3)

DPI-1047错误中的说明URL显示将PATH设置为Instant Client库的位置。您还需要正确的VS Redistributable - 所有内容都在说明中给出。请注意,他们没有提及设置ORACLE_HOME。

确保Instant Client与Python相同的32位或64位架构。

答案 1 :(得分:2)

当我设置我的python环境时,我在我的PATH变量中为Windows框添加了instantclient文件,我甚至没有为ORACLE_HOME定义任何东西。将其添加到PATH可能有助于此过程。

但是当你安装了whl文件时没有错误或消息?

您是否可以通过pip安装cx_Oracle模块? cx_Oracle网站将命令列为python -m pip install cx_Oracle,但我相信如果正确设置了PATH变量,您应该可以使用pip3 install cx_Oracle

你在$ Python / Lib / site-packages /目录中看到cx_Oracle吗?如果您无法找到您的网站套餐,请在您的IDLE中使用它来查找它的位置。

>>> import site
>>> site.getsitepackages()
['C:\\Python36', 'C:\\Python36\\lib\\site-packages']

答案 2 :(得分:0)

我通过从https://www.oracle.com/technetwork/topics/winx64soft-089540.html下载oracle即时客户端并将该文件夹的位置添加到Windows路径来解决了该问题。对我来说很好!

答案 3 :(得分:-1)

请按照以下步骤操作 苹果系统 ODPI-C需要使用Oracle Client库,该库可在macOS的Oracle Instant Client中找到。

在macOS上,ODPI-C首先使用标准库搜索顺序搜索名为“ libclntsh.dylib”的库。如果找不到此文件,它将在返回错误之前搜索“ libclntsh.dylib.18.1”,“ libclntsh.dylib.12.1”,然后搜索“ libclntsh.dylib.11.1”。

Oracle Instant ClientZip¶ 要使用Oracle Instant Client zip文件运行ODPI-C应用程序,请执行以下操作:

从此处下载18、12或11.2“ Basic”或“ Basic Light” zip文件。选择与您的应用程序体系结构匹配的64位或32位程序包。大多数应用程序使用64位。

将软件包解压缩到应用程序可访问的单个目录中。例如:

mkdir -p / opt / oracle

解压缩Instantclient-basic-macos.x64-12.2.0.1.0.zip

添加指向$ HOME / lib或/ usr / local / lib的链接,以使应用程序能够找到该库。例如:

mkdir〜/ lib

ln -s /opt/oracle/instantclient_12_2/libclntsh.dylib〜/ lib /

或者,复制所需的OCI库。例如:

mkdir〜/ lib

cp /opt/oracle/instantclient_12_2/{libclntsh.dylib.12.1,libclntshcore.dylib.12.1,libons.dylib,libnnz12.dylib,libociei.dylib}〜/ lib /

对于Instant Client 11.2,必须复制OCI库。例如:

mkdir〜/ lib cp /opt/oracle/instantclient_11_2/{libclntsh.dylib.11.1,libnnz11.dylib,libociei.dylib}〜/ lib / 如果打算将可选的Oracle配置文件(例如tnsnames.ora,sqlnet.ora或oraaccess.xml)与Instant Client一起放置,请创建一个network / admin子目录(如果不存在)。例如:

mkdir -p / opt / oracle / instantclient_12_2 / network / admin 这是与此即时客户端链接的应用程序的默认Oracle配置目录。

或者,可以将Oracle配置文件放在另一个可访问的目录中。然后将环境变量TNS_ADMIN设置为该目录名称。