2012-10-23 2 views
4

lxml을 사용하는 스크립트로 가져온 다른 dll을 디버깅하고 있습니다. lxml 프로젝트에서 objectify_d.pyd 및 etree_d.pyd를 만들어야합니다. 난 그냥 일을 시도Windows에서 python27 용 디버그 lxml 작성에 도움이 필요합니다.

python setup.py build --debug --static 

: http://lxml.de/build.html 그러나이 명령을 사용하여 나는 성공적 여기 빌드 지침에 따라 다음을 구축

python setup.py build --debug 

을하지만, 작동하지 않았다.

빌드가 성공한 것 같습니다. objectify_d.pyd 및 etree_d.pyd가 생성됩니다. 수입 할 때 나는 다음을 얻을 디버그 파이썬 빌드를 실행 (/ python27/lib 디렉토리/사이트 패키지/LXML/C로 복사) :이 파일을 사용

>>> 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] 

난 다음에 파이썬을 실행 디버거를 호출하고 LoadLibraryEx에 대한 호출이 실패했는지 확인합니다 (NULL을 반환). GetLastError() 호출은 dll을 찾을 수 없음을 의미하는 126을 반환합니다. 경로가 맞습니다. 그래서 그것이 종속 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을 사용하여 Windows 7 박스에서 실행 해요 (32 비트) 사람이 바로 작동 창문 LXML의 디버그 빌드로 날을 제공하거나에 날 지점 수 있다면

내가 만족할 것 디버그 dll과 혼합 된 릴리스 python dll을 사용하는 방법에 대한 설명.

답변

1

Cygwin 환경에서 구축하고 Windows에서 실행하려고합니까? Windows에서 빌드 해보십시오.

1

나는 lxml의 디버그 버전을 만들려고하지 않았지만 거의 확실하게 작동하지 않을 것입니다. 내가 기억하는 한, lxml과 함께 제공되는 설치 스크립트는 릴리스 버전 만 빌드하기 위해 만들어졌습니다.

이 기능을 활용하고 릴리스 버전에 대한 디버그 기호 (.pdb)를 생성하면됩니다. 절차는 매우 복잡하지만 다음은 개요입니다.

  1. 필요한 빌드 도구 (Visual Studio, Powershell)를 설치하십시오.
  2. lxml의 종속성 소스 코드 (libxml2, libxslt, iconv, zlib)를 가져옵니다.
  3. 이러한 종속성을 빌드하고 디버그 기호를 생성하십시오.
  4. 디버그 할 버전 (예 : 3.7.0)을 다운로드하십시오.
  5. 정적으로 빌드 된 종속성을 가리 키도록 lxml의 setup.py를 조정하십시오.
  6. 패치 distutils를 사용하면 Python 인터프리터를 작성하는 데 사용했던 Visual Studio 버전 대신 특정 Visual Studio 버전을 사용해야한다고 생각할 수 있습니다.
  7. lxml을 빌드하고 디버그 기호를 생성하십시오.
  8. 휠 파일에 모든 것을 패키지화하십시오.

그게 전부 야! :) 아마도 detailed procedure에 링크하는 것이 더 합리적 일 것입니다.

면책 조항 : 나는이 게시물의 저자입니다.

관련 문제