Oracle DPI-1047在macOS 10.14.6和Python 2.7.10上的应用。

问题描述 投票:0回答:1

我和一位同事都使用Mac OS X,我使用10.15.3,python 2.7.15,GCC 4.2.1,cx_Oracle 7.0.0,SQL Developer 19.1.0,她使用10.14.6,python 2.7.10,GCC 4.2.1,cx_Oracle 7.0.0。她使用10.14.6,python 2.7.10,GCC 4.2.1,cx_Oracle 7.3.0与SQL Developer 18.3.0。

我们有一个简单的python脚本,通过以下方式连接数据库 cx_Oracle. 我们得到了通常的DPI-1047错误。我按照这里的指示 https:/oracle.github.ioodpidocinstallation.html#macos。 并与最新的19 "基本 "版本,以及因为公证而进行的一些调整(https:/github.comoraclepython-cx_Oracleissues341#issuecomment-541794557。)我可以让它工作: .dylib 文件被正确拾取,代码可以连接到db。

对于我的同事,找不到文件。我们按照与我的电脑完全相同的步骤,先下载19版,然后再下载18版 "Basic"(天真地认为它与SQL Developer版本有关),解压后,将链接添加至 $LD_LIBRARY_PATH 变量,但是,DPI-1047错误仍然弹出。然而,DPI-1047错误仍然弹出。

我们试图按照之前在这个论坛或其他论坛上的解决方案,但它们对我们来说并不适用,也不奏效。

谢谢你的帮助!c.

python oracle macos cx-oracle
1个回答
1
投票

总之你在10.14.6(Mojave)的电脑上出现了问题。

我最初的想法是,你使用的是操作系统默认的Python。 这是行不通的,因为苹果已经锁定了它。从 安装说明: "确保你没有使用捆绑的Python。这有受限制的权限,将无法加载Oracle客户端库。" (我没有冒险去黑掉Instant Client,看看是否能让它工作)

然而,Python 2.7.10是从哪里来的? 我的系统默认是Python 2.7.16。

不要设置LD_LIBRARY_PATH。而我的~lib目录却只有一个符号链接。

libclntsh.dylib -> /Users/cjones/instantclient_19_3/libclntsh.dylib

所有的配置问题都是由于苹果公司不断加强的安全要求。希望下一个Oracle Instant Client版本能让它更容易使用。

SQL Developer与Python cx_Oracle的使用几乎完全没有关系(除非你在SQL Developer中使用厚厚的JDBC连接,这种情况很少)。

而且不要在macOS上遵循Linux或Windows的说明!

© www.soinside.com 2019 - 2024. All rights reserved.