在IIS中使用pyodbc出現錯誤的解決方法

筆者運行環境python

  • Window xp sp3web

  • IIS 5.1數據庫

  • Python 2.7.2 (http://www.python.org/)django

  • Django-1.3.1 windows

  • isapi_wsgi-0.4.2-py2.5    api

  • SQL Server 2005app

  • pyodbc-3.0.5.win32-py2.7
    測試

  • django-pyodbcgoogle


使用過程當中,用python自帶的web develpment server測試一切正常,但若是部署到IIS上即會出現沒法鏈接數據庫的錯誤,詳細錯誤以下:spa

    cannot import pyodbc dll not found


後來查了半天,才發現是pyodbc的一個小bug,項目主頁上給出瞭解決方法

http://code.google.com/p/pyodbc/issues/detail?id=214


簡單的意思是說pyodbc顯示引用了msvcr90.dll庫,因爲個人python web app是被host 在iis裏,因此有可能runtime庫不一致,出現DLL not found。

解決辦法:

我使用了其中一個命令,命令行進入pyodbc.pyd所在的目錄,一般是在[Python27]\Lib\site-packages目錄下

運行下面的命令

mt.exe -inputresource:c:\windows\system32\python27.dll;#2 -outputresource:pyodbc.pyd;#2

(由於沒有找到pyodbcconf.pyd,第二條命令不須要,多是for python27的版本沒有把)

這條命令實際上是把python27.dll引用的symbol抽取出來寫到pyodbc.pyd文件裏,這樣就能夠解決對msvcr90.dll的引用問題


運行以後,若是還有別的錯誤,能夠嘗試從新deploy一下,具體命令能夠參考我另外一篇博文

http://blog.csdn.net/omage/article/details/7291403

相關文章
相關標籤/搜索