我在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
有人可以帮我吗?
答案 0 :(得分:1)
instantclient_19_3
的文件夹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)
答案 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可能尚未更新)。