Исправьте синтаксис mt.exe для решения проблем импорта pyodbc
Я впервые внедряю приложение Python в Windows (Apache & mod_wsgi/Flask/Sqlalchemy).
Я хотел бы использовать pyodbc, чтобы Sqlalchemy разговаривал с mssql.
Мне удалось без проблем установить двоичную сборку pyodbc, и она работает, когда я использую ее из командной строки. Тем не менее, mod_wsgi регистрирует ошибки импорта при попадании import pyodbc
Эта тема на трекере проблем pyodbc точно описывает мою проблему и, похоже, подразумевает манифесты Windows. Однако я не могу понять, как использовать mt.exe для ее решения.
В PowerShell:
C:\my\site-packages> C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\mt.exe
-inputresource:c:\Windows\SysWOW64\python27.dll;#2 -manifest
-outputresource:pyodbc.pyd#2'
mt.exe : command line error c10100a9: Some operation on the input manifests must
be specified (even if it is just to pipe the input to the output).
Use the /? option for help on usage and samples.`
В cmd:
C:\my\site-packages>"C:\Program Files\Microsoft SDKs"\Windows\v7.1\Bin\mt.exe
-inputresource:C:\Windows\SysWOW64\python27.dll#2 -outputresource:pyodbc.pyd#2
mt.exe : general error c101008c: Failed to read the manifest from the resource
of file "C:\Windows\SysWOW64\python27.dll#2". The system cannot find the file
specified.
Что я делаю неправильно?!
2 ответа
Я автор темы на трекере проблем pyodbc.
Если я что-то упустил, похоже, что файл "C: \ Windows \ SysWOW64 \ python27.dll" не существует. Может быть, у вас есть версия, отличная от 2.7?
В противном случае, убедитесь, что вы установили официальные пакеты Windows для Python и убедитесь, что импорт Pyodbc успешно с этой версией. Если это произойдет, вы сможете заменить путь к локальному файлу python.dll (например, python27.dll) из установочного корня python или в другом месте.
Что ж, это смущает: я, кажется, пропускаю несколько точек с запятой. Я знаю, что хотя бы несколько раз выполнил команду правильно, поэтому я перечислю другие вещи, которые я изменил, прежде чем заметить ошибку в синтаксисе:
- Сделано трижды, уверен, что все было 32-битным
- Скачал Visual Studio C++ 2008 Express (раньше был только распространяемый VC++ 2008, и это дало мне другую версию mt.exe)
- Удалил что-нибудь с "2010" и "C++" в названии
- Запустил команду в cmd; по какой-то причине он не работает вообще в PowerShell.
Еще раз спасибо Альфреду за его эпически подробный и полезный пост в списке рассылки pyodbc.