无法在 Visual Studio 中使用 Python 连接 DB2 数据库

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

我已经在Windows中安装了Python 3.12.5和Visual studio。我已按照链接 https://github.com/ibmdb/python-ibmdb/blob/master/INSTALL.md(步骤 1)中提到的步骤进行操作。执行以下命令,

pip install ibm_db
import ibm_db >> this resulted in error ImportError: DLL load failed while importing ibm_db: The specified module could not be found

执行以下命令来克服 python 中的错误

import os
os.add_dll_directory('C:\\Python\\Python312\\Lib\\site-packages\\clidriver\\bin')
import ibm_db

尝试在 Visual Studio 中执行以下代码并导致错误 ImportError: DLL load failed while importing ibm_db: 找不到指定的模块

import ibm_db
ibm_db.connect("DATABASE=name;HOSTNAME=host;PORT=60000;PROTOCOL=TCPIP;UID=username;
            PWD=password;", "", "")
print('connection successful')

我不确定我是否错过了任何步骤,因为我尝试从 python 执行 import ibm_db 仍然会导致相同的错误。

python visual-studio db2
1个回答
0
投票

根据评论,解决方案涉及正确放置行:

import os os.add_dll_directory(....) import ibm_db 
进入正在运行的 python 脚本。

此外,

import ibm_db
行必须不抛出任何异常,它必须成功才能运行python ibm_db。

此解决方法仅在 ibm_db 版本 3.2.3 之后才变得必要,自述文件在 python ibm_db 的 github 页面上对此进行了描述,问题列表描述了此更改的基本原理。目前尚不清楚这是否会是永久性的改变,或者后续的未来改进是否会使其变得不必要。

os.add_dll_directory()
的目录应该是clidriver bin子目录位置的完整路径。这在每台机器上都可能不同,并且可能随虚拟环境的不同而变化,并随 python 版本的变化而变化。

查找目录名称的一种方法是使用

pip show ibm_db
并检查“Location:”行并附加“bin”目录。指定目录路径时,将 Microsoft-Windows 目录分隔符(反斜杠)替换为(双反斜杠)。

您还可以使用更多几行Python在当前Python或虚拟环境的site-packages文件夹中搜索clidriver目录,并动态构建位置并附加“bin”子目录并将动态构建的路径传递给

os.add_dll_directory
。这避免了对路径进行硬编码。您还可以使该代码以 MS-Windows 操作系统为条件(因为 python 脚本可能还需要在不使用
os.add_dll_directory()
的 linux 上运行,以便允许您的 python 脚本在不同的操作系统上运行相同的源代码。

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