#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 зависит от того.