在 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中。这就是我期待的最终结果。这需要在不将结果导出到电子表格的情况下完成。
您也许能够解决此症状,这通常是由于 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