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) <type 'exceptions.ImportError'>: 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) <type 'exceptions.ImportError'>: No module named PyClass pythoncom error: CPyFactory::CreateInstance failed to create instance. (80004005) </code> *********** The WSH souce file *************** <code> <job id="pyimport"> <script language="python" src="./Classes/python/pyimport.pys"> </script> <script language="vbscript"> <![CDATA[ Private Function EvalCmd() Register() Dim oPy : Set oPy = CreateObject("Python.PyClass") EvalCmd = oPy.pouet() End Function ]]> </script> <script language="vbscript"> <![CDATA[ wscript.echo(EvalCmd()) ]]> </script> </job> </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>
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32