[python-win32] WSH and Python

Kain kain94 at gmail.com
Tue Aug 5 15:37:45 CEST 2008


Hi,

I'm working on a wsh script which import some Python ressources. I wish to
create a Python COM Object in order to wrap my wsh scripts to an imported
Python module. But, After many tryings and days, I'have not succeed in it.

The code below is very simple but when I try to run the WSH's job I get a
pythoncom error from policy.py. But the com server is well registered
according to python engine and Windows registery so what's happend ? Could
you help me ?

Thanks, Kain.


*********** The python exception ***************
<code>
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. Tous droits reserves.

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

Traceback (most recent call last):
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 144, in
CreateInstance
  return retObj._CreateInstance_(clsid, reqIID)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 202, in
_CreateInstance_
  myob = call_func(classSpec)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 734, in
call_func
  return resolve_func(spec)(*args)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 723, in
resolve_func
  module = _import_module(mname)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 742, in
_import_module
  __import__(mname)
&lt;type 'exceptions.ImportError'&gt;: No module named PyClass
pythoncom error: Unexpected gateway error

Traceback (most recent call last):
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 144, in
CreateInstance
  return retObj._CreateInstance_(clsid, reqIID)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 202, in
_CreateInstance_
  myob = call_func(classSpec)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 734, in
call_func
  return resolve_func(spec)(*args)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 723, in
resolve_func
  module = _import_module(mname)
  File "C:\Program
Files\Python25\Lib\site-packages\win32com\server\policy.py", line 742, in
_import_module
  __import__(mname)
&lt;type 'exceptions.ImportError'&gt;: No module named PyClass
pythoncom error: CPyFactory::CreateInstance failed to create instance.
(80004005)

</code>
*********** The WSH souce file ***************

<code>
&lt;job id="pyimport"&gt;
 &lt;script language="python" src="./Classes/python/pyimport.pys"&gt;
 &lt;/script&gt;
 &lt;script language="vbscript"&gt;
  &lt;![CDATA[
  Private Function EvalCmd()
  Register()
  Dim oPy : Set oPy = CreateObject("Python.PyClass")
  EvalCmd = oPy.pouet()
  End Function
  ]]&gt;
 &lt;/script&gt;
 &lt;script language="vbscript"&gt;
  &lt;![CDATA[
  wscript.echo(EvalCmd())
  ]]&gt;
 &lt;/script&gt;
&lt;/job&gt;
</code>
*********** The Python souce file ***************
<code>
# DECLARE PYTHON DEPENDENCIES #

from pythoncom import CreateGuid
from win32com.server.register import RegisterServer, UnregisterServer,
UseCommandLine

# DEBUG MODE #

DEBUGGING = 1

# DECLARE PYTHON COM CLASS #

class PyClass:
 _reg_clsid_ = "{C76F559C-D725-4318-B198-0A9CCB98FB5D}"
 _reg_progid_ = "Python.PyClass"
 _reg_desc_ = "Python PyClass"
 _reg_class_spec_ = "win32com.servers.PyImport.PyClass"
 _public_methods_ = ["pouet"]

 def pouet(self):
  return "pouet"

# PYTHON COM SERVER #

def Register():
 if __name__=='__main__':
  return UseCommandLine(PyClass, debug=DEBUGGING)
 else:
  # __name__ value is set to "__ax_main__" when called from WSH
  return RegisterServer(PyClass._reg_clsid_, PyClass._reg_class_spec_,
PyClass._reg_desc_, PyClass._reg_progid_)

def Unregister():
 return UnregisterServer(PyClass._reg_clsid_)

if __name__=='__main__':
 if "--unregister" in sys.argv:
  Unregister()
 else:
  Register()
</code>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20080805/94b73623/attachment.htm>


More information about the python-win32 mailing list