msys2 不会将驱动程序文件夹识别为有效

Posted

技术标签:

【中文标题】msys2 不会将驱动程序文件夹识别为有效【英文标题】:msys2 won't recognize driver folder as valid 【发布时间】:2020-11-14 23:34:09 【问题描述】:

我有一个使用 ODBC 连接的 python 程序,因此需要找到数据库驱动程序。由于我无法在我的 mingw64 版本的 python 上安装 pyodbc(我被告知 pyodbc 具有硬编码的 MSVC 标志,因此很难做到),我改为使用我在 msys2 中运行的常规 Windows python 安装只需更改我的路径以指向该 python 安装(也许我应该做更多的事情来定位不同的 python 安装?)

现在我遇到的问题是,虽然程序在 powershell 中使用该版本的 python 运行良好,但当我尝试在 msys2 中运行它时,我收到以下错误:

conn = pyodbc.connect(链接)

pyodbc.InterfaceError: ('IM003', '[IM003] Specified driver could not be
loaded due to system error  126: The specified module could not be found.
(Teradata, C:\\Program Files\\Teradata\\Client\\14.10\\ODBC Driver for
Teradata nt-x8664\\Lib\\tdata32.dll). (160) (SQLDriverConnect)')

问题是目录是正确的,我什至可以运行

cd "C:\\Program Files\\Teradata\\Client\\14.10\\ODBC Driver for Teradata nt-x8664\\Lib\\"

在 msys2 中,它工作得很好,并且将该目录识别为有效并且它包含一个名为 tdata32.dll 的文件。使用 winpty python myprogram.py 也无法解决此问题。

那么为什么我的系统只能在我从 msys2 运行 python 程序时才能找到这个驱动程序目录?

【问题讨论】:

【参考方案1】:

我怀疑 tdata32.dll 依赖于其他 DLL,其中一个没有找到,因为当您从 MSYS2 运行 Python 时它不在 PATH 上。

尝试添加一行 Python 代码以在两种环境中打印 PATH 环境变量的内容以检查问题。

您也可以使用Dependency Walker 查看 tdata32.dll 依赖的 DLL。

【讨论】:

以上是关于msys2 不会将驱动程序文件夹识别为有效的主要内容,如果未能解决你的问题,请参考以下文章

node : 无法将“node”项识别为 cmdlet函数脚本文件或可运行程序的名称。 最全面有效的解决方案

x86 : 无法将“x86”项识别为 cmdlet函数脚本文件或可运行程序的名称。

无法将“vue”项识别为 cmdlet函数脚本文件或可运行程序的名称

idea中的终端terminal使用Maven报错 : mvn : 无法将“mvn”项识别为 cmdlet函数脚本文件或可运行程序的名称。

字符串未被识别为有效的日期时间[关闭]

Alamofire 无法将结果识别为 JSON