gpt4 book ai didi

python - Linux profile.d 环境变量不适用于 Python 中的 cx_oracle

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:03 24 4
gpt4 key购买 nike

这是我之前问题的延续:cx_Oracle does not recognize location of Oracle software installation for installation on Linux .

在我能够正确安装 cx_oracle 之后,我想设置我的环境,这样就不必每次都导出环境变量。

为此,我编写了一个包含以下两个导出语句的 shellscript:

export ORACLE_HOME=/home/user1/instantclient_12_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

并将这个.sh文件保存到/etc/profile.d/文件夹中。

当我再次使用 PuTTY 登录服务器时,回显语句表明环境变量在那里:

# echo $ORACLE_HOME
/home/user1/instantclient_12_1
# echo $LD_LIBRARY_PATH
:/home/user1/instantclient_12_1

但是当我用 cx_oracle 运行一些 python 代码时,我得到一个错误:

ImportError: libclntsh.so.12.1: cannot open shared object file: No such file or directory

只有当我重新输入环境变量的导出命令时,代码才会再次运行。在我这样做之后,使用 cx_oracle 的代码运行正常。

为什么环境变量在我执行 echo 命令时出现,但它们却不能正常工作?以及如何让环境变量正确保留?

我读到的指南说使用 /etc/profile.d/ 中的 shell 脚本来完成它,因为最好不要直接编辑 /etc/profile

更新:

我尝试将两条导出行添加到 /etc/profile,但我仍然遇到同样的问题,当我回显时环境变量在那里,但我在尝试使用时仍然遇到此错误python 中的 cx_oracle:

ImportError: libclntsh.so.12.1: cannot open shared object file: No such file or directory

我是否遗漏了一些有关定义环境变量的关键信息?

第二次更新:我尝试使用我计划使用调用 cx_Oracle 的代码运行的 shell 脚本初始化环境:

StartServer.sh 的内容:

export ORACLE_HOME=/home/user1/instantclient_12_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
python3 ./UDPDBQuery.pyc

我尝试通过以下方式在后台运行代码:

bash StartServer.sh &

但是我还是遇到了和以前一样的错误,好像我没有输入环境变量一样。它只有在我自己导出变量,然后再次运行代码时才有效。当我注销时,代码也会停止在后台运行。我仍然很困惑为什么它不起作用。

cx_oracle 是否不能使用环境变量,除非我手动为它们执行导出语句?

最佳答案

好吧,我发现两个环境变量之一没有正确导出 /etc/profile.d 中的 .sh 文件,并执行 $LD_LIBRARY_PATH 会给我 No such file or directorytclient_12_1,但是 $ORACLE_HOME 会给我 /home/user1/instantclient_12_1/: 是一个目录

我解决这个问题的方法是将导出语句拆分为 profile.d 中的两个单独的 shell 脚本。

现在一切正常。

关于python - Linux profile.d 环境变量不适用于 Python 中的 cx_oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com