Oracle Instant Client仍无法在Mac OS Catalina 10.15.4上运行

时间:2020-04-27 14:39:58

标签: oracle macos python-3.7 macos-catalina instantclient

我在Mac Os Catalina版本10.15.4上安装了Oracle Instant Client版本19.3 但是我在python3.7和python3.8上仍然有相同的错误:

来源:(cx_Oracle.DatabaseError)DPI-1047:无法找到64位Oracle客户端库:“ dlopen(libclntsh.dylib,1):找不到合适的映像。找到了: 强化程序中不允许使用文件系统相对路径”。有关帮助,请参见https://oracle.github.io/odpi/doc/installation.html#macos (此错误的背景位于:http://sqlalche.me/e/4xp6

这是我的装置:

$: ls-l ~/lib
ls -l ~/lib
total 0
lrwxr-xr-x 1 giacomocallegaro staff 58 22 Apr 09:13 libclntsh.dylib -> /Users/giacomocallegaro/instantclient_19_3/libclntsh.dylib

$:cat .zprofile

为Python 3.8设置PATH

原始版本保存在.zprofile.pysave

PATH =“ / Library / Frameworks / Python.framework / Versions / 3.8 / bin:$ {PATH}” 导出路径

为Python 3.7设置PATH

原始版本保存在.zprofile.pysave

PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH=$PATH:~/instantclient_19_3
export PATH

$: echo $PATH

/Users/giacomocallegaro/.nvm/versions/node/v12.14.1/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/Library/Apple/usr/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/giacomocallegaro/.nvm/versions/node/v12.16.1/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/opt/openssl/bin:/Users/giacomocallegaro/instantclient_19_3:/Users/giacomocallegaro/instantclient_19_3

$: which python:
/usr/bin/python

当我运行sqlplus时:

$:sqlplus -v

SQL * Plus:版本19.0.0.0.0-生产 版本19.3.0.0.0

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

  • 转到https://www.oracle.com/technical-resources/
  • 下载-> Oracle Instant Client-> macOS(Intel x86)->基本软件包
  • 在下载文件夹中,您将找到一个名为instantclient_19_3的文件夹
  • 将以下内容添加到您的python脚本中
import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir=r'/Users/<username>/Downloads/instantclient_19_3')

将弹出一些窗口,因此转到System preferences --> Security & Privacy --> General,您将在此处看到通知。点击open anyway。您将不得不重复最后一步3-4次。

答案 1 :(得分:0)

也许该错误引起误解,并且与MacOS Catalina上的Oracle Instant Client的一般问题有关?看看这篇博客文章:

Gary's Oracle On Tap

希望这会有所帮助!

答案 2 :(得分:0)

download instant client from here之后,在/usr/local/lib文件夹中创建一个符号链接(在该文件夹中,所有.dylib文件都保留其符号链接)。

就我而言,我将即时客户端提取到/opt/oracle/instantclient_19_3中。所以命令是:

$ ln -s /opt/oracle/instantclient_19_3/libclntsh.dylib /usr/local/lib/

但是,当我尝试从python创建连接时,还有另一个问题:

Error while trying to retrieve text for error ORA-01804

Oracle说:“ Instant Client 19.3和18.1支持macOS Mojave和High Sierra ”,并且我有macOS Catalina 10.15,不知道这是否与此有关,错误01804表示该时区信息无效。

有关此的更多信息:http://www.dba-oracle.com/t_ora_01804_start_oracle.htm

编辑:问题已解决。

下载SQL * Plus软件包后,我设法连接并验证了即时客户端是否正常运行。重新启动IntelliJ时,我的python问题也已解决(我从内部运行服务器,因此PATH可能尚未更新)。