4

lxml を使用するスクリプトによってインポートされた別の dll をデバッグしています。lxml プロジェクトから objectify_d.pyd と etree_d.pyd を作成する必要があります。http://lxml.de/build.htmlのビルド手順に従って、これらを正常にビルドしましたが、次のコマンドを使用しました。

python setup.py build --debug --static

私はただやってみました:

python setup.py build --debug 

しかし、それはうまくいきませんでした。

ビルドは成功したようです。objectify_d.pyd と etree_d.pyd が作成されます。これらのファイルを (c:/python27/lib/site-packages/lxml/ にコピーして) 使用し、デバッグ python ビルドを実行すると、インポートしようとすると次のようになります。

>>> from lxml import objectify
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
[83669 refs]

次に、デバッガーで python を実行し、LoadLibraryEx の呼び出しが失敗していることを確認しました (NULL を返します)。GetLastError() 呼び出しは 126 を返します。これは、dll が見つからないことを意味します。パスは正しいです。したがって、依存DLLが見つからないことが予想されます。これをビルドしたマシンで実行しているので、不足しているのはランタイム ライブラリではありません。

dllをビルドしたときに出力されたものは次のとおりです。

</c/lxml/lxml-2.3 Trunk>
$python setup.py build --debug --static
Building lxml version 2.3.
Building with Cython 0.15.1.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
Building against libxml2/libxslt in one of the following directories:
  ..\iconv-1.9.2.win32\lib
  ..\libxml2-2.7.8.win32\lib
  ..\libxmlsec-1.2.18.win32\lib
  ..\libxslt-1.1.26.win32\lib
  ..\zlib-1.2.5\lib
  c:\python27
running build
running build_py
running build_ext
skipping 'src/lxml\lxml.etree.c' Cython extension (up-to-date)
building 'lxml.etree' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Od /MDd /W3 /GS- /Z7 /D_DEBUG -I..\iconv-1.9.2.win32\include -I..\libxml2-2.7.8.win 32\include -I..\libxmlsec-1.2.18.win32\include -I..\libxslt-1.1.26.win32\include -I..\zlib-1.2.5\include -I..\ -IC:\python27\include -IC:\python27\PC /TcC:\lxml \lxml-2.3\src\lxml\lxml.etree.c /Fobuild\temp.win32-2.7\Debug\src/lxml\lxml.etree.obj -w DEBUG
cl : Command line warning D9025 : overriding '/W3' with '/w'
cl : Command line warning D9024 : unrecognized source file type 'DEBUG', object file assumed
cl : Command line warning D9027 : source file 'DEBUG' ignored
lxml.etree.c
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo /INCREMENTAL:no /DEBUG /pdb:None /LIBPATH:..\iconv-1.9.2.win32\lib /LIBPATH:..\l ibxml2-2.7.8.win32\lib /LIBPATH:..\libxmlsec-1.2.18.win32\lib /LIBPATH:..\libxslt-1.1.26.win32\lib /LIBPATH:..\zlib-1.2.5\lib /LIBPATH:c:\python27 /LIBPATH:C:\p ython27\libs /LIBPATH:C:\python27\PCbuild libxslt_a.lib libexslt_a.lib libxml2_a.lib iconv_a.lib zlib.lib WS2_32.lib /EXPORT:initetree build\temp.win32-2.7\Debu g\src/lxml\lxml.etree.obj /OUT:build\lib.win32-2.7\lxml\etree_d.pyd /IMPLIB:build\temp.win32-2.7\Debug\src/lxml\etree_d.lib /MANIFESTFILE:build\temp.win32-2.7\Debug\src/lxml\etree_d.pyd.manifest
   Creating library build\temp.win32-2.7\Debug\src/lxml\etree_d.lib and object build\temp.win32-2.7\Debug\src/lxml\etree_d.exp
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
lxml.etree.obj : warning LNK4049: locally defined symbol _xmlFree imported
lxml.etree.obj : warning LNK4049: locally defined symbol _xmlMalloc imported
lxml.etree.obj : warning LNK4049: locally defined symbol _xsltDocDefaultLoader imported
lxml.etree.obj : warning LNK4049: locally defined symbol _xsltLibxsltVersion imported
zlib.lib(adler32.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(crc32.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(deflate.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzclose.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzlib.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzread.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzwrite.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(inffast.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(inflate.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(inftrees.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(trees.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(zutil.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe -nologo -manifest build\temp.win32-2.7\Debug\src/lxml\etree_d.pyd.manifest -outputresource:build\lib.win32-2.7\lxml\etree_d.pyd;2 skipping 'src/lxml\lxml.objectify.c' Cython extension (up-to-date)
building 'lxml.objectify' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Od /MDd /W3 /GS- /Z7 /D_DEBUG -I..\iconv-1.9.2.win32\include -I..\libxml2-2.7.8.win32\include -I..\libxmlsec-1.2.18.win32\include -I..\libxslt-1.1.26.win32\include -I..\zlib-1.2.5\include -I..\ -IC:\python27\include -IC:\python27\PC /TcC:\lxml\lxml-2.3\src\lxml\lxml.objectify.c /Fobuild\temp.win32-2.7\Debug\src/lxml\lxml.objectify.obj -w DEBUG
cl : Command line warning D9025 : overriding '/W3' with '/w'
cl : Command line warning D9024 : unrecognized source file type 'DEBUG', object file assumed
cl : Command line warning D9027 : source file 'DEBUG' ignored
lxml.objectify.c
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo /INCREMENTAL:no /DEBUG /pdb:None /LIBPATH:..\iconv-1.9.2.win32\lib /LIBPATH:..\libxml2-2.7.8.win32\lib /LIBPATH:..\libxmlsec-1.2.18.win32\lib /LIBPATH:..\libxslt-1.1.26.win32\lib /LIBPATH:..\zlib-1.2.5\lib /LIBPATH:c:\python27 /LIBPATH:C:\python27\libs /LIBPATH:C:\python27\PCbuild libxslt_a.lib libexslt_a.lib libxml2_a.lib iconv_a.lib zlib.lib WS2_32.lib /EXPORT:initobjectify build\temp.win32-2.7\Debug\src/lxml\lxml.objectify.obj /OUT:build\lib.win32-2.7\lxml\objectify_d.pyd /IMPLIB:build\temp.win32-2.7\Debug\src/lxml\objectify_d.lib /MANIFESTFILE:build\temp.win32-2.7\Debug\src/lxml\objectify_d.pyd.manifest
   Creating library build\temp.win32-2.7\Debug\src/lxml\objectify_d.lib and object build\temp.win32-2.7\Debug\src/lxml\objectify_d.exp
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
zlib.lib(adler32.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(crc32.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(deflate.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzclose.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzlib.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzread.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(gzwrite.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(inffast.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(inflate.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(inftrees.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(trees.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
zlib.lib(zutil.obj) : warning LNK4099: PDB 'zlib.pdb' was not found with '..\zlib-1.2.5\lib\zlib.lib' or at 'C:\lxml\lxml-2.3\zlib.pdb'; linking object as if no debug info
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe -nologo -manifest build\temp.win32-2.7\Debug\src/lxml\objectify_d.pyd.manifest -outputresource:build\lib.win32-2.7\lxml\objectify_d.pyd;2

その他の情報:

  • 私は lxml-2.3 コードを使用しています。これは、私のアプリが使用しているものだからです。
  • 私はpython27(32ビット)を使用してWindows 7ボックスで実行しています

誰かが、動作する Windows 用の lxml のデバッグ ビルドを提供してくれたり、リリース Python DLL とデバッグ DLL を混在させて使用する方法の説明を教えてくれたりできれば満足です。

4

2 に答える 2

1

Cygwin 環境でビルドしてから Windows で実行しようとしていますか? Windows でビルドしてみてください。

于 2013-01-18T18:00:24.330 に答える
1

lxml のデバッグ バージョンをビルドしようとしたことはありませんが、ほぼ確実に機能しません。私の記憶では、lxml に同梱されているセットアップ スクリプトは、リリース バージョンのみをビルドするために作成されました。

これを利用して、リリース バージョンのデバッグ シンボル (.pdb) を生成するだけです。手順はかなり複雑ですが、概要は次のとおりです。

  1. 必要なビルド ツール (Visual Studio、Powershell) をインストールします。
  2. lxml の依存関係 (libxml2、libxslt、iconv、zlib) のソース コードを取得します。
  3. これらの依存関係を構築し、デバッグ シンボルを生成します。
  4. デバッグする lxml のバージョンをダウンロードします (例: 3.7.0)。
  5. 静的に構築された依存関係を指すように lxml の setup.py を微調整します。
  6. distutils にパッチを適用して、Python インタープリターのビルドに使用されたものではなく、特定の Visual Studio バージョンを使用する必要があると認識させます。
  7. lxml をビルドし、そのデバッグ シンボルを生成します。
  8. 全体を wheel ファイルにパッケージ化します。

それでおしまい!:)詳細な手順にリンクする方がおそらくより合理的だと思います。

免責事項:私は投稿の著者です。

于 2016-12-27T20:18:30.540 に答える