python - lxml: DLL load failed: Det angivne modul kunne ikke findes

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har Windows Server 2008 R2 x64.
Den kører Python27 x86 + Django 1.3 + apache 2.2 x86 under wsgi. Det kører ok uden lxml.


Vi bruger soaplib, som kræver lxml. Jeg prøvede at installere lxml på flere måder:



  1. ved hjælp af easy\_install

  2. Download Win32-installationen binær.



Problemet er, at kørsel under websted under apache rejser følgende fejl:


ImportError at /
DLL load failed: The specified module could not be found.


Det rejser denne fejl på from lxml import etree


Jeg har googled til løsning, men fandt intet nyttigt. Nogle oplysninger jeg fandt:



  1. At der var en vis ændring i python26-> python27, der ændrer hvilke dlls er inkluderet

  2. Jeg brugte afhængighedsvogn til at finde ud af hvilke dlls der mangler. Dem, jeg fandt mangler, er: gpsvc.dll, IEShims.dll, msvcr90.dll. Da jeg forsøgte at installere x86 omfordelbare pakke, men det ændrede ikke noget. Jeg forsøgte at kopiere msvcr90.dll til æg dir af lxml og det skabte en anden fejl, der sagde, at det ikke kunne hentes dll (jeg kan ikke huske eksakt undtagelse, men jeg kan generere det hvis det er nødvendigt)



Det virker, når du kører fra django intern server ved at køre manage.py runserver


Hvordan kan jeg løse dette problem? Tak.

Bedste reference


Jeg installerede uofficielle bygger fra http://www.lfd.uci.edu/~gohlke/pythonlibs/[5]


Det løste mit problem.

Andre referencer 1


Jeg har også haft dette problem, når jeg forsøger at indlæse etree via Windows Scripting Host. Efter at have forsøgt forskellige tilgange, kom jeg på tværs af denne Python 3.1-ændring, som foreslår, at de nye Python-moduler ikke længere indlejrer manifest, da det medfører distributionsproblemer uden MSVC ++ runtime installeret:



  • http://comments.gmane.org/gmane.comp.python.lxml.devel/5684

  • http://bugs.python.org/issue4120



Så jeg har simpelthen læst\% PythonPath\% \ Lib \ site-packages \ lxml \ etree.pyd i Resource Hacker (http://www.angusj.com/resourcehacker/) og fjernet manifestressourcerne, der er indlejret i den. [6] [7] [8]

Andre referencer 2


Installering af DLL'erne er ikke nok, du skal bruge Apache til at bruge dem. Se:


http://groups.google.com/group/modwsgi/msg/afb025dc949c7051[9]