我安装了该库,当尝试使用我的凭据访问jupyter笔记本中的SQL时,出现以下错误:
DatabaseError:DPI-1047:无法找到64位Oracle Client库:“找不到指定的模块”。请参见https://oracle.github.io/odpi/doc/installation.html#windows以获取帮助
答案 0 :(得分:6)
最简单的解决方案如下:
就是这样!
答案 1 :(得分:4)
简短的答案是: cx_Oracle.init_oracle_client(lib_dir= "c:\path_to_libraries")
以下是我解决该问题的 步骤 :
如果尚未安装cx_Oracle,则可以使用以下命令进行安装:
python -m pip install cx_Oracle --upgrade
可以在here中找到cx_Oracle文档。
使用以下命令来验证是否已安装并识别所有内容:
import sqlalchemy as sqla
import pandas as pd
import cx_Oracle
# Test to see if it will print the version of sqlalchemy
print(sqla.__version__) # this returns 1.2.15 for me
# Test to see if the cx_Oracle is recognized
print(cx_Oracle.version) # this returns 8.0.1 for me
# This fails for me at this point but will succeed after the solution described below
cx_Oracle.clientversion()
这时,我收到错误消息,指出无法找到库。解决方法如下:
import os
import platform
# This is the path to the ORACLE client files
lib_dir = r"C:\put_your_path_here\instantclient-basic-windows.x64- 19.9.0.0.0dbru\instantclient_19_9"
# Diagnostic output to verify 64 bit arch and list files
print("ARCH:", platform.architecture())
print("FILES AT lib_dir:")
for name in os.listdir(lib_dir):
print(name)
请确保更新特定于您的安装的lib_dir
路径。如果路径正确,您应该会看到所有Oracle文件的清单,例如:(adrci.exe,oci.dll,oci.sym等)。这是Python能够找到Oracle驱动程序的位置。
当前(2020年11月)standard传递用于Windows的Oracle库的位置的方法是cx_Oracle.init_oracle_client(lib_dir= "c:\path_to_libraries")
。这是一个示例:
lib_dir = r"C:\put_your_path_here\instantclient-basic-windows.x64- 19.9.0.0.0dbru\instantclient_19_9"
try:
cx_Oracle.init_oracle_client(lib_dir=lib_dir)
except Exception as err:
print("Error connecting: cx_Oracle.init_oracle_client()")
print(err);
sys.exit(1);
此时,我可以运行以下错误而没有任何错误:
# This works after passing the lib_dir path
cx_Oracle.clientversion() # For me it returns: (19, 9, 0, 0, 0)
已弃用 以下是临时更新PATH变量的方法:
以下方法可行,但现在首选使用cx_Oracle.init_oracle_client(lib_dir= "c:\path_to_libraries")
。
import os
# Manually append the location of the ORACLE libraries to the PATH variable
os.environ["PATH"] = lib_dir + ";" + os.environ["PATH"]
答案 2 :(得分:2)
我建议您首先检查OS,Python和Oracle Instant Client体系结构的兼容性:
import platform
platform.architecture()
然后,我绝对建议您在jupyter笔记本中设置Oracle Instant Client:
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
答案 3 :(得分:2)
根据 cx_Oracle page 上访问的文档。
第一步:安装cx_Oracle
python -m pip install cx_Oracle --upgrade
第 2 步:下载并解压 Oracle 基本客户端
对于 Windows 下载并提取 Oracle Basic Instatnt 客户端 instantclient-basic-windows.x64-19.9.0.0.0dbru.zip 文件。
第 3 步:将 Instatnt 客户端位置通知 cx_Oracle 模块。
如果您坚持使用文档并将它们解压缩到 c:\oracle
文件夹中,那么您的脚本可能如下所示。
import cx_Oracle
cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_9")
现在您将摆脱错误。
答案 4 :(得分:1)
我在 Anconda Spyder 中遇到了这个错误。
我就是这样解决的。
从以下位置获取基本包 InstantClient:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
提取并复制所有 *.dll 文件,然后将其粘贴到您有 python.exe 的 Anaconda3 文件夹中。
答案 5 :(得分:0)
可能您已经安装了cx_Oracle Python库。为了通过jupyter Notebook执行数据库连接,您需要安装Oracle Client,这是您的方案所缺少的。请按照以下链接中的步骤进行操作,然后安装Oracle Client,这将解决您的问题: https://oracle.github.io/odpi/doc/installation.html#windows
答案 6 :(得分:0)
确保已安装正确的oracle客户端(您可以从此处“ https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html找到oracle客户端软件包,然后将已下载的文件夹添加到安装python的文件夹中,然后添加此位置(您的位置客户端程序包文件夹)到系统的环境变量。 希望能奏效。
答案 7 :(得分:0)
对于MAC
完成后:python -m pip install cx_Oracle --upgrade
试试:
import cx_Oracle
# Test to see if the cx_Oracle is recognized
print(cx_Oracle.version) # this returns 8.0.1 for me
# This fails for me at this point but will succeed after the solution described below
cx_Oracle.clientversion()
如果您遇到以下问题:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): image not found". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
按照此处突出显示的步骤进行操作:https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#manual-installation
手动安装
从 Oracle 下载基本 64 位 DMG。 (https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html)
安装 dng
打开挂载的 dng,然后运行 ./install_ic.sh
(通过终端)
例如:cd /Volumes/instantclient-basic-macos.x64-19.8.0.0.0dbru/ && ./install_ic.sh
在 Finder 中,弹出安装的 Instant Client 包。
重新运行 oracle 连接。
import cx_Oracle
cx_Oracle.init_oracle_client(lib_dir="/Users/priyank.pathak/Downloads/instantclient_19_8")
## cx_Oracle.init_oracle_client(lib_dir="/Users/your_username/Downloads/instantclient_19_8")
cx_Oracle.clientversion()