macos下用python使用cx_Oracle连接oracle数据库,报错cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client librar

File "/Users/lukezhi/Lucas/Lucas-Projects/PythonProj/hongDaoProjects/symptomCluster/extract_Dis_Sym_Umls.py", line 8, in <module>
    conn=cx_Oracle.connect('umls/[email protected]:1521/orcl')    #连接数据库
cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "dlopen(libclntsh.dylib, 1): image not found". See https://oracle.github.io/odpi/doc/installation.html#macos for help

解决方法:

1:确保你的python安装好了cx_Oracle;

2:打开https://oracle.github.io/odpi/doc/installation.html#macos,点击here,然后进入去下载oracle instant client zip文件

macos下用python使用cx_Oracle连接oracle数据库,报错cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client librar

我这里下载的是64位版本:instantclient-basic-macos.x64-11.2.0.4.0.zip 

macos下用python使用cx_Oracle连接oracle数据库,报错cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client librar

3:接下来开始在mac下安装需要的oracle instant client

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

    mkdir -p /opt/oracle
    unzip instantclient-basic-macos.x64-12.2.0.1.0.zip
    
  2. 添加链接$HOME/lib/usr/local/lib使应用程序能够找到库。例如:

    mkdir ~/lib
    ln -s /opt/oracle/instantclient_12_2/libclntsh.dylib.12.1 ~/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/
    
  3. 如果您打算同定位可选的Oracle配置文件,如tnsnames.orasqlnet.oraoraaccess.xml与即时客户端,然后创建一个network/admin子目录。例如:

    mkdir -p /opt/oracle/instantclient_12_2/network/admin
    

    这是与此Instant Client链接的应用程序的默认Oracle配置目录。

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