ibm-db 3.2.0 ImportError:导入 ibm_db 时 DLL 加载失败:找不到指定的模块

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

在 Python 3.11.4 中安装了 ibm-db 3.2.0。

尝试导入使用以下脚本安装的包。在 Visual Studio Code 中运行它。

import ibm_db
import ibm_db_dbi

但是,一直给出以下信息。

>> import ibm_db
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing ibm_db: The specified module could not be found.
>>> import ibm_db_dbi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\cindy.tao\AppData\Local\Programs\Python\Python311\Lib\site-packages\ibm_db_dbi.py", line 45, in <module>
    import ibm_db
ImportError: DLL load failed while importing ibm_db: The specified module could not be found.

在同一时间范围内安装的其他软件包不会发生同样的情况。只有 ibm-db 有这个问题。

有人可以帮忙吗?

尝试重新安装 ibm-db。尝试在 Python 3.10 中安装 ibm-db。同样的情况还在发生。

这样做的目的是——将db2数据库的查询结果直接导出到Python dataframe中。这就是我期待的最终结果。这需要在不将结果导出到电子表格的情况下完成。

python db2
1个回答
0
投票

您也许能够解决此症状,这通常是由于 PATH 上不存在 DLL 文件引起的,尽管 ibm_db 设置中更好的编码可以修复它。

ibm_db 模块是外部 Db2 odbc 驱动程序的一个小包装器,该驱动程序有许多 DLL 文件,其中一个是主 CLI dll (db2cli*.dll)。

默认情况下,当您安装 ibm_db 时,它还会安装一个名为“clidriver”的小型 Db2 odbc 驱动程序。

如果安装 ibm_db 时使用默认值,您将在“site-packages”位置看到 clidriver 目录。例如,您可以在 cmd.exe 窗口中使用

pip show ibm_db
显示站点包“位置:”(完整路径),在该位置下您可以看到 clidriver 子目录,而 clidriver 下是 bin 目录。

当你的python脚本运行时,目录中的clidriver需要位于PATH中,当它不在PATH中时,就会导致你的症状。

您可以手动将其 bin 目录永久添加到 PATH,也可以更改 python 脚本以使 PATH 更改在 python 脚本运行时暂时处于活动状态。有时 PATH 变量值对于 Microsoft Windows 的默认值来说太长(并且需要更改注册表变量以允许更长的 PATH 值),有时以前对 PATH 值的手动编辑将其弄乱,以致它变成无效。

在 python 脚本中,您可以在导入 ibm_db 模块之前添加代码,并且需要将“your_clidriver_path in”(如下面的示例所示)更改为您可以看到的目录中 clidriver 的完全限定路径名在pip show ibm_db报道的“地点:”中。

import os

os.add_dll_directory('your_clidriver_path\bin') 

import ibm_db

有时会有额外的依赖项,需要 PATH 上有一个额外的目录,这可能因 Microsoft-Windows 和 python ibm_db 的安装而异。 
README

提供了更多解决方法。

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