Correct mt.exe syntax to resolve pyodbc import problems

纵饮孤独 提交于 2019-12-07 16:27:02

问题


I'm deploying a Python app on Windows for the first time (Apache & mod_wsgi/Flask/Sqlalchemy).

I'd like to use pyodbc to get Sqlalchemy talking to mssql.

I was able to install a binary build of pyodbc with no problem, and it works when I use it from the command line. However, mod_wsgi is logging import errors when it hits import pyodbc

This thread on the pyodbc issue tracker describes my issue exactly, and seems to implicate Windows manifests. However, I can't figure out how to use mt.exe to resolve it.

In 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.`

In 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.

What am I doing wrong?!


回答1:


I'm the author of the thread on the pyodbc issue tracker.

Unless I'm missing something it looks like the file "C:\Windows\SysWOW64\python27.dll" doesn't exist. Maybe you have a version other than 2.7?

Otherwise, make sure you have installed the official windows packages for python and verify that importing pyodbc succeeds with that version. If it does, you should be able to substitute the path to your local python.dll (e.g. python27.dll) from the python installation root or elsewhere.




回答2:


Well, this is embarrassing: I appear to be missing some semicolons. I know that I'd run the command properly at least a few times though, so I will list the other things I changed before noticing the mistake in the syntax:

  • Made triply sure everything was 32-bit
  • Downloaded Visual Studio C++ 2008 Express (was just running VC++ 2008 redistributable before, and this gave me a different version of mt.exe)
  • Uninstalled anything with "2010" and "C++" in its name
  • Ran the command in cmd; for whatever reason, it does not work at all in PowerShell.

Thanks again to Alfred for his epically detailed and helpful post over at the pyodbc mailing list.



来源:https://stackoverflow.com/questions/10626807/correct-mt-exe-syntax-to-resolve-pyodbc-import-problems

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!