From: Trevor M. L. <tre...@gm...> - 2009-05-14 23:12:22
|
I have compiled a Python module using Py2exe. The *.exe successfully executes from a command prompt; however, attempting to run the *.exe from a win32 CreateProcess call results in an error: !!python/name:pywintypes.com_error '' The error is produced when the following line of code is executed: daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') What am I doing wrong? Does the *.exe have to be specially prepared to be successfully invoked using CreateProcess? |
From: Mark H. <ski...@gm...> - 2009-05-15 00:35:07
|
On 15/05/2009 9:12 AM, Trevor M. Lango wrote: > I have compiled a Python module using Py2exe. The *.exe successfully > executes from a command prompt; however, attempting to run the *.exe > from a win32 CreateProcess call results in an error: > > !!python/name:pywintypes.com_error '' > > The error is produced when the following line of code is executed: > > daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') That doesn't look like an error generated by win32com - are you sure you don't have another exception handler in place? You will need to determine the exact exception and traceback from the failing Dispatch call before we can offer any more clues. Mark |
From: Trevor M. L. <tre...@gm...> - 2009-05-15 00:43:42
|
You are correct; that line of code is wrapped with the following: try: daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') except: print sys.exc_info()[0] How can I obtain a more detailed traceback? On Thu, May 14, 2009 at 5:34 PM, Mark Hammond <ski...@gm...>wrote: > On 15/05/2009 9:12 AM, Trevor M. Lango wrote: > >> I have compiled a Python module using Py2exe. The *.exe successfully >> executes from a command prompt; however, attempting to run the *.exe >> from a win32 CreateProcess call results in an error: >> >> !!python/name:pywintypes.com_error '' >> >> The error is produced when the following line of code is executed: >> >> daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') >> > > That doesn't look like an error generated by win32com - are you sure you > don't have another exception handler in place? You will need to determine > the exact exception and traceback from the failing Dispatch call before we > can offer any more clues. > > Mark > |
From: Mark H. <ski...@gm...> - 2009-05-15 01:03:54
|
On 15/05/2009 10:43 AM, Trevor M. Lango wrote: > You are correct; that line of code is wrapped with the following: > > try: > daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') > except: > print sys.exc_info()[0] > > How can I obtain a more detailed traceback? Remove the exception handler. Mark |
From: Trevor M. L. <tre...@gm...> - 2009-05-15 15:32:21
|
How do I capture the output? The compiled code module is being invoked from CreateProcess with dwCreationFlags:=CREATE_NO_WINDOW. On Thu, May 14, 2009 at 6:03 PM, Mark Hammond <ski...@gm...>wrote: > On 15/05/2009 10:43 AM, Trevor M. Lango wrote: > >> You are correct; that line of code is wrapped with the following: >> >> try: >> daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') >> except: >> print sys.exc_info()[0] >> >> How can I obtain a more detailed traceback? >> > > Remove the exception handler. > > Mark > |
From: Trevor M. L. <tre...@gm...> - 2009-05-15 15:55:18
|
I captured the detailed traceback with the following line of code: os.dup2(output.fileno(), sys.stderr.fileno()) Here is the traceback: Traceback (most recent call last): File "foo.py", line 225, in <module> main() File "foo.py", line 196, in main daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') File "win32com\client\__init__.pyc", line 95, in Dispatch File "win32com\client\dynamic.pyc", line 98, in _GetGoodDispatchAndUserName File "win32com\client\dynamic.pyc", line 78, in _GetGoodDispatch pywintypes.com_error: (-2147024770, 'The specified module could not be found.', None, None) On Fri, May 15, 2009 at 8:32 AM, Trevor M. Lango <tre...@gm...>wrote: > How do I capture the output? The compiled code module is being invoked > from CreateProcess with dwCreationFlags:=CREATE_NO_WINDOW. > > > On Thu, May 14, 2009 at 6:03 PM, Mark Hammond <ski...@gm...>wrote: > >> On 15/05/2009 10:43 AM, Trevor M. Lango wrote: >> >>> You are correct; that line of code is wrapped with the following: >>> >>> try: >>> daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') >>> except: >>> print sys.exc_info()[0] >>> >>> How can I obtain a more detailed traceback? >>> >> >> Remove the exception handler. >> >> Mark >> > > |
From: Mark H. <ski...@gm...> - 2009-05-15 23:05:56
|
On 16/05/2009 1:55 AM, Trevor M. Lango wrote: > I captured the detailed traceback with the following line of code: > > os.dup2(output.fileno(), sys.stderr.fileno()) > > Here is the traceback: > > Traceback (most recent call last): > File "foo.py", line 225, in <module> > main() > File "foo.py", line 196, in main > daoEngine = win32com.client.Dispatch(r'DAO.DBEngine.36') > File "win32com\client\__init__.pyc", line 95, in Dispatch > File "win32com\client\dynamic.pyc", line 98, in > _GetGoodDispatchAndUserName > File "win32com\client\dynamic.pyc", line 78, in _GetGoodDispatch > pywintypes.com_error: (-2147024770, 'The specified module could not be > found.', None, None) It looks like a path problem or similar finding the COM object. I'd be looking for anything different in the executable environment created by CreateProcess() in your code... Mark |