Исправьте синтаксис 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.

Другие вопросы по тегам