[英]IBM Db2 dsdriver environment variables in Python
操作系统:RHEL 7.9 构建:ob_1_3_0
我已将 dsdriver 和 clidriver 下载到/opt/IBM
。 我跑. ./db2cli
. ./db2cli
位于/opt/IBM/dsdriver
以设置环境变量,以便import ibm_db
在 python 中工作。
但是,当在外部(不是从 CLI)运行我的 python 脚本时,该过程失败,因为它找不到libdb2.so.1
。
因为在 Python 中设置环境变量来纠正这一点似乎没有效果( os.environ["VAR"]="value"
和os.system('source /opt/IBM/dsdriver/db2profile')
没有效果),我在/usr/lib64
中创建了指向库的符号链接。 但是,该程序后来遇到了这个问题:
SQL10007N Message "0" could not be retrieved. Reason code: "3". SQLCODE=-1042
运行pip3 show ibm_db
产生以下结果:
Name: ibm-db
Version: 3.1.1
Summary: Python DBI driver for DB2 (LUW, zOS, i5) and IDS
Home-page: http://pypi.python.org/pypi/ibm_db/
Author: IBM Application Development Team
Author-email: opendev@us.ibm.com
License: Apache License 2.0
Location: /usr/local/lib64/python3.6/site-packages/ibm_db-3.1.1-py3.6-linux-x86_64.egg
Requires:
我试图弄清楚如何让 Python 设置所有必要的变量,以便 Db2 库可以正常工作。
仅在需要时使用 dsdriver
对于所有简单的用例,仅使用 clidriver,默认情况下,python ibm_db 模块的安装会自动下载 clidriver 并将其安装到 python 站点包目录树中。 当您允许自动安装 clidriver 时,您可以使用命令pip show ibm_db
查看安装位置并检查目录位置的输出。
对于最简单的用例,允许pip install ibm_db
将 clidriver 安装到默认位置(在站点包树下)。 对于手动安装任何驱动程序,在安装 ibm_db 之前,根据您的需要选择最合适的位置,然后在安装 ibm_db 之前将 IBM_DB_HOME 导出到该位置。
例如,如果主机名上的单个用户将使用 python,那么您可以在/home/$USER
中的任何位置安装 clidriver,当然如果同一主机名上的多个用户将运行 python,则手动将驱动程序安装到合适的位置(例如在/opt
下),除非驱动程序本身具有默认位置(在这种情况下使用该默认位置)。
对于 RHEL 和其他 Linux 发行版,为确保运行 python 的用户能够加载 Db2 共享库,您应该安排编辑 shell 启动文件(例如 .bashrc)以包括:
export LD_LIBRARY_PATH=/path/to/clidriver/lib:$LD_LIBRARY
其中 /path/to/clidriver/lib(或适当的 lib64)是包含 libdb2.so.1 文件的目录的绝对路径。 当使用 dsdriver 而不是 clidriver 时,也需要进行更改,但这次目录路径必须是包含 libdb2.so.1 文件的 dsdriver lib/lib64 目录之一。 相关的目录权限和所有权也必须兼容,即必须允许读取和执行。
如果您希望 python ibm_db 为多个用户运行,您可以通过编辑 /etc/ld.so.conf 或在 /etc/ld.so.conf.d 中创建文件或其他方式使此 LD_LIBRARY_PATH 更改永久(对所有用户)您的发行版为此目的提供的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.