【问题标题】:cx_Oracle.DatabaseError: DPI-1047 when using sudo to excute Python codecx_Oracle.DatabaseError:使用 sudo 执行 Python 代码时出现 DPI-1047
【发布时间】:2021-08-15 21:42:29
【问题描述】:

我是 Ubunu 的新手。我编写了一个简单的 Python 代码来测试 Ubuntu 服务器上的 Oracle 连接。当我使用以下命令运行它时:

$ python3 test_oracle_connection.py

代码执行成功。但是当我尝试使用 sudo 运行代码时,如下所示:

$ sudo python3 test_oracle_connect.py

我收到以下错误: cx_Oracle.DatabaseError:DPI-1047:找不到 64 位 Oracle 客户端库:“libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”。请参阅https://cx_oracle.readthedocs.io/en/latest/user_guide/installation.html 寻求帮助。

我在 ~/.profile 中设置了以下环境变量

LD_LIBRARY_PATH=/opt/oracle/insantclient_21_1

我使用的是 Python 3.8.5。

我已经为此苦苦挣扎了好几天。真的需要你的帮助!谢谢!

【问题讨论】:

    标签: python linux cx-oracle


    【解决方案1】:

    问题是当您运行 sudo 时,您将更改为 root(不同的用户),因此缺少环境变量。您有几个选择可以考虑:

    1. 使用全局配置(/etc/ld.so.conf),这样就不必设置环境变量LD_LIBRARY_PATH

    2. 创建一个设置环境变量LD_LIBRARY_PATH 的bash 脚本,然后运行您的脚本。使用 bash 脚本而不是直接运行脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 2022-01-06
      • 1970-01-01
      • 2020-08-20
      • 2014-05-30
      • 2018-03-04
      • 2019-02-02
      • 2017-09-22
      相关资源
      最近更新 更多