2

apache2 + modwsgiを使用してアプリケーションを起動すると、キャッチします

例外タイプ:ImportError
例外値:DLLのロードに失敗しました:指定されたモジュールが見つかりませんでした。

列をなして

lxmlからetreeをインポート

Django開発サーバーを使用すると、すべて正常に動作しますVisual C ++Redistributable2008がインストールされています

依存関係ウォーカーは、msvcrt90.dllが欠落していると言いましたが、cx_Oracleでも同じ状況がありますが、cx_Oracleのdllは正しくロードされます

何か案は?

Windows2003サーバー64ビットおよびWindowsXPsp332ビットpython2.732ビットcx_Oracle5.0.432ビット

UPD:libxml2-2.7.7およびlibxslt-1.1.26をダウンロードします

setup.py build--compilermingw32でビルドしようとしました

lxmlバージョン2.3の構築。
Cython0.14.1を使用したビルド。
エラー:「xslt-config」は内部コマンドまたは外部コマンドとして認識されません。
操作可能なプログラムまたはバッチファイル。

**libxml2とlibxsltの開発パッケージがインストールされていることを確認してください**

libxsltのビルド構成を使用する
実行中のビルド
build_pyを実行しています
build_extを実行しています
'src / lxml \ lxml.etree.c' Cython拡張機能をスキップします(最新)
'lxml.etree'拡張機能の構築
C:\ MinGW \ bin \ gcc.exe -mno-cygwin -mdll -O -Wall -IC:\ Python27 \ include -IC:\ Python27 \ PC -c src / lxml \ lxml.etree.c -o build \ temp .win32-2.7 \ Release \ src \ lxml \ lxml.et
ree.o -w
build \ temp.win32-2.7 \ Release \ src \ lxml\etree.defを書き込みます
C:\ MinGW \ bin \ gcc.exe -mno-cygwin -shared -s build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o build \ temp.win32-2.7 \ Release \ src \ lxml \ etree.def -LC:\ Python27 \ lib
■-LC:\ Python27 \ PCbuild -llibxslt -llibexslt -llibxml2 -liconv -lzlib -lWS2_32 -lpython27 -lmsvcr90 -o build \ lib.win32-2.7 \ lxml \ etree.pyd
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0xd11):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0xd24):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x1ee92):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x1eed6):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x2159e):`_imp__xmlMalloc'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x2e741):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x2e784):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x3f157):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x3f19a):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x3f4ac):`_imp__xmlFree'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0x3f4ef):`_imp__xmlFree'へのより多くの未定義の参照が続きます
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0xb1ad5):`xsltLibxsltVersion'への未定義の参照
build \ temp.win32-2.7 \ Release \ src \ lxml \ lxml.etree.o:lxml.etree.c:(。text + 0xb1b9a):`xsltDocDefaultLoader'への未定義の参照
collect2:ldが1つの終了ステータスを返しました
エラー:コマンド'gcc'が終了ステータス1で失敗しました

UPD2:インポートcx_Oracleが正常に機能する理由を理解しています:cx_Oracle.pydには「MSVCRT.dll」依存関係が含まれていますetree.pydにはありません

4

1 に答える 1

2

それは確かに「msvcrt90.dll」のためです。Python 2.6のマイクロパッチリビジョンのどこかから、拡張モジュールのDLLへの自動依存関係の構築を停止し、Python実行可能ファイルに依存していました。ただし、他のシステムに組み込まれている場合は、DLLへの実行可能ファイルのリンクに依存しますが、Apacheの場合は依存しません。したがって、Pythonの変更により、WindowsにPythonを組み込んだ多くのシステムが壊れました。唯一の解決策は、すべての拡張モジュールが、多くの場合はそうではない必要なDLLに独自の依存関係を持つことです。psycopg2拡張機能はこれによって悪影響を受け、ビルドを変更して依存関係を追加しました。psycopg2で発生した問題について検索する場合があります。解決策の1つは、代わりにWindows上のMinGWコンパイラを使用して拡張機能を再構築することでした。

于 2011-04-05T23:54:26.067 に答える