3

IIS を使用して Django を処理し、 django-mssqlを使用してトランザクションを処理する場合、Django プロジェクトを SQL Server 2008 に接続する際に問題が発生します。IIS 7 と64 ビットの ActivePython 2.7を使用しています。

インストールされているパッケージのリストは次のとおりです。

Django==1.4.5
distribute==0.6.19
django-mssql==1.2
pypm==1.3.4
pythonselect==1.3
pywin32==214
virtualenv==1.6.1
wsgiref==0.1.2

スタック トレースの最後の部分は次のとおりです。

  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 40, in 
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 51, in load_backend
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Try using django.db.backends.sqlserver_ado instead.
Error was: DLL load failed: The specified module could not be found.

sqlserver_adoフォルダをに追加しC:\Python27\Lib\site-packages\django\db\backends、データベース設定をsettings.pyから'ENGINE': 'sqlserver_ado',に変更すると'ENGINE': 'django.db.backends.sqlserver_ado',、わずかに異なるスタック トレースが得られます。

  File "C:\Python27\lib\site-packages\django\db\backends\sqlserver_ado\base.py", line 6, in 
    import dbapi as Database
  File "C:\Python27\lib\site-packages\django\db\backends\sqlserver_ado\dbapi.py", line 49, in 
    import pythoncom
  File "C:\Python27\lib\site-packages\pythoncom.py", line 2, in 
    import pywintypes
  File "C:\Python27\lib\site-packages\win32\lib\pywintypes.py", line 124, in 
    __import_pywin32_system_module__("pywintypes", globals())
  File "C:\Python27\lib\site-packages\win32\lib\pywintypes.py", line 64, in __import_pywin32_system_module__
    import _win32sysloader
ImportError: DLL load failed: The specified module could not be found.

SQL Server ではなく sqlite データベースに接続すると、アプリケーションは正常に動作します。
開発サーバーを使用してプロジェクトを実行すると、SQL Server への接続は正常に機能します。
したがって、問題は IIS / PyISAPIe と django_mssql の組み合わせにあるようです。

他のいくつかの質問で、同様の問題が言及されています。これらのそれぞれは、何らかの方法でシステム パスで python dll を取得することによって解決されました。試しました(パスを確認し、ファイルを にコピーすることの両方を行いましc:\python2.7たが、同じエラーが発生します。

最後sys.pathに、開発サーバーのバージョンと IIS / PyISAPIe のバージョンについて説明します。

開発(作品):

C:\Users\Administrator\Desktop\django test C:\Python27\python27.zip C:\Python27\DLLs C:\Python27\lib C:\Python27\lib\plat-win C:\Python27\lib\lib-tk C:\Python27 C:\Users\Administrator\AppData\Roaming\Python\Python27\site-packages C:\Python27\lib\site-packages C:\Python27\lib\site-packages\win32 C:\Python27\lib\site-packages\win32\lib C:\Python27\lib\site-packages\Pythonwin C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info

IIS (失敗):

C:\PyISAPIe C:\Windows\system32\python27.zip C:\Python27\Lib C:\Python27\DLLs C:\Python27\Lib\lib-tk c:\windows\system32\inetsrv C:\Python27 C:\Python27\lib\site-packages C:\Python27\lib\site-packages\win32 C:\Python27\lib\site-packages\win32\lib C:\Python27\lib\site-packages\Pythonwin C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info c:\inetpub\PyApp

ここからどこへ行くべきかについてのヒントや提案をいただければ幸いです。次に、通常の (つまり非アクティブな) Python を試して、違いが生じるかどうかを確認します。

4

1 に答える 1

1

64ビットのpythonを最初からインストールし、ここのアドバイスに従うとうまくいきました。問題は、Active Python のちょっとした間抜けだったに違いありません。

役立つかもしれないことに気付いたことが1つありました。

  • python と pywin32 の通常のインストール (リンクされたサイトの実行可能ファイルを使用) では、問題を解決するためにコピーする必要のある実行可能ファイルを含むC:\Python27\Lib\site-packagesという名前のフォルダーが含まれていました。pywin32_system32C:\Python27
  • Active Python インストールでは、このディレクトリは存在しませんでした。

win32また、両方のインストール方法 ( 、win32com、およびwin32comext) に存在するディレクトリには、わずかに異なるファイルが含まれていることにも気付きました。

これにより、将来誰かの痛みが軽減されることを願っています。

于 2013-02-28T23:02:36.600 に答える