4

我第一次在 Windows 上部署 Python 应用程序(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.`

在命令中:

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.

我究竟做错了什么?!

4

2 回答 2

2

我是 pyodbc 问题跟踪器上的线程的作者。

除非我遗漏了一些东西,否则文件“ C:\Windows\SysWOW64\python27.dll ”似乎不存在。也许您有 2.7 以外的版本?

否则,请确保您已经安装了适用于 python 的官方 windows 包,并验证该版本是否成功导入 pyodbc。如果是这样,您应该能够从 python 安装根目录或其他位置替换本地 python.dll(例如 python27.dll)的路径。

于 2012-05-17T17:34:10.187 回答
0

嗯,这很尴尬:我似乎遗漏了一些分号。我知道我至少会正确运行该命令几次,所以在注意到语法错误之前,我将列出我更改的其他内容:

  • 确保一切都是 32 位的
  • 下载了 Visual Studio C++ 2008 Express(之前只是运行 VC++ 2008 可再发行版本,这给了我不同版本的 mt.exe)
  • 卸载名称中带有“2010”和“C++”的任何内容
  • 在cmd中运行命令;无论出于何种原因,它在 PowerShell 中根本不起作用。

再次感谢 Alfred 在 pyodbc 邮件列表中提供的极其详细和有用的帖子。

于 2012-05-17T20:27:41.237 回答