Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

lxml: DLL load failed: The specified module could not be found

I have Windows Server 2008 R2 x64. It has running Python27 x86 + Django 1.3 + apache 2.2 x86 under wsgi. It runs ok without lxml.

We're using soaplib, which requires lxml. I tried installing lxml in several ways:

  1. using easy_install
  2. downloading win32 installation binary.

Problem is that running under site under apache raises following error:

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

It raises this error on from lxml import etree

I have googled for solution but found nothing useful. Some info I found:

  1. That there was some change in python26->python27 that changes what dlls are included
  2. I used dependency walker to find which dlls are missing. The ones I found missing are: gpsvc.dll, IEShims.dll, msvcr90.dll. When I tried installing x86 redistributable package but it didn't change anything. I tried copying msvcr90.dll to egg dir of lxml and it created another error that said it coudn't load the dll (I don't remember exact exception but I can generate it if needed)

It works when running from django internal server by running manage.py runserver

How can I resolve this issue? Thanks.

like image 718
Marius Grigaitis Avatar asked Aug 29 '11 09:08

Marius Grigaitis


2 Answers

I installed unofficial builds from http://www.lfd.uci.edu/~gohlke/pythonlibs/

It solved my problem.

like image 200
Marius Grigaitis Avatar answered Oct 29 '22 03:10

Marius Grigaitis


I've had this problem as well when attempting to load etree via Windows Scripting Host. After trying different approaches, I came across this Python 3.1 change, which proposes that the new Python modules should no longer embed manifests as it causes distribution problems with no MSVC++ runtimes installed:

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

So I've simply loaded up %PythonPath%\Lib\site-packages\lxml\etree.pyd in Resource Hacker (http://www.angusj.com/resourcehacker/) and removed the manifest resource embedded in it.

like image 23
Jerry Chong Avatar answered Oct 29 '22 03:10

Jerry Chong