pythoncom -- ImportError: DLL load failed

Richard Whidden not at arealemailaddress.org
Fri Apr 24 15:08:25 EDT 2009


I've sniffed around for a solution to this problem but I can't find 
anything.

The simple COM example in the "Programming on Win32" O'Reilly book works 
fine.  However, as soon as I add 'import pgdb' to the object, chaos ensues 
promply.

Here's what I did.

Step 1, write this:
foo.py ------
# print pythoncom.CreateGuid()
import pgdb
class PythonUtilities:
  _public_methods_ = [ 'SplitString']
  _reg_progid_ = "FooFoo.Utilities"
  _reg_clsid_ = "<Run pythoncom.CreateGuid() from a python prompt and insert 
value here."

  def SplitString(self, val, item=None):
    import string
    if item !=None: item = str(item)
    return string.split(str(val), item)

if __name__=='__main__':
  print "Registering COM server"
  import win32com.server.register
  win32com.server.register.UseCommandLine(PythonUtilities)
----- End of foo.py

Step 2, run 'python foo.py'.

Step 3, write this:
test.vbs ----- 
set o = CreateObject("FooFoo.Utilities")
------- End of test.vbs

Step 4, run 'cscript /nologo test.vbs'

Step 5, watch it fail.

Error ----------
C:\devel\blip\test.vbs(1, 1) (null): Unspecified error

pythoncom error: ERROR: server.policy could not create an instance.

Traceback (most recent call last):
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 136, 
in CreateInstance
    return retObj._CreateInstance_(clsid, reqIID)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 194, 
in _CreateInstance_
    myob = call_func(classSpec)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 727, 
in call_func
    return resolve_func(spec)(*args)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 716, 
in resolve_func
    module = _import_module(mname)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 735, 
in _import_module
    __import__(mname)
  File "C:\devel\blip\foo.py", line 4, in <module>
    class PythonUtilities:
  File "C:\devel\blip\foo.py", line 5, in PythonUtilities
    import pgdb
  File "C:\Python26\Lib\site-packages\pgdb.py", line 66, in <module>
    from _pg import *
ImportError: DLL load failed: The specified module could not be found.
pythoncom error: Unexpected gateway error

Traceback (most recent call last):
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 136, 
in CreateInstance
    return retObj._CreateInstance_(clsid, reqIID)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 194, 
in _CreateInstance_
    myob = call_func(classSpec)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 727, 
in call_func
    return resolve_func(spec)(*args)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 716, 
in resolve_func
    module = _import_module(mname)
  File "C:\Python26\lib\site-packages\win32com\server\policy.py", line 735, 
in _import_module
    __import__(mname)
  File "C:\devel\blip\foo.py", line 4, in <module>
    class PythonUtilities:
  File "C:\devel\blip\foo.py", line 5, in PythonUtilities
    import pgdb
  File "C:\Python26\Lib\site-packages\pgdb.py", line 66, in <module>
    from _pg import *
ImportError: DLL load failed: The specified module could not be found.
pythoncom error: CPyFactory::CreateInstance failed to create instance. 
(80004005)
---------  End of Error

I've tried a few things.  If I import foo.py into a python script, it works 
fine.  It only fails if I try things via COM.

I've run depends.exe.  Everything can see everything else.

I've moved libpq.dll to \windows\system32, \scriptpath, \postgres\lib, 
\postgres\bin... Probably other places too to no avail.

I'm sure I've tried other things, I just can't think of them right now.  I 
have this sickening feeling in my gut that the solution is so obvious that a 
blind and dead person would have spotted the solution before me.

Anyway, if anyone has an idea (or a link to an idea) please let me know.

Thanks,
Richard Whidden 





More information about the Python-list mailing list