[英]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.