msys2 не распознает папку драйвера как действительную

#python #pyodbc #msys2

#python #pyodbc #msys2

Вопрос:

У меня есть программа на python, которая использует ODBC-соединение, поэтому необходимо найти драйверы базы данных. Поскольку я не смог установить pyodbc на свою версию python mingw64 (мне сказали, что pyodbc имеет жестко заданные флаги MSVC, что делает это очень сложным), я вместо этого использую обычную установку Windows python, которую я запускаю из msys2, просто изменив свой путь, чтобы указать на эту установку 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 также не решило эту проблему.

Итак, почему моя система не может найти этот каталог драйвера, но только когда я запускаю программу python из msys2?

Ответ №1:

Я подозреваю, что tdata32.dll зависит от других библиотек DLL, и одна из них не найдена, потому что ее нет в PATH при запуске Python из MSYS2.

Попробуйте добавить строку кода Python для печати содержимого переменной среды PATH в обеих средах, чтобы изучить проблему.

Вы также можете использовать средство обхода зависимостей, чтобы увидеть, какие библиотеки DLL tdata32.dll зависит от того.