From: Michele P. - U. s. <mic...@un...> - 2007-09-25 10:34:37
|
Hi all... I would ask you a question about win32com/py2exe problem in my app... I have an app that needs to load Microsoft Outlook contacts, so I found some code that allows to do that. It works well when I execute my app using the python interpreter, but gives me a strange error when I execute the .exe file obtained compiling my source with py2exe: Traceback (most recent call last): File "library\outlookContacts\outlookContacts.pyo", line 19, in __init__ File "win32com\client\gencache.pyo", line 540, in EnsureDispatch File "win32com\client\CLSIDToClass.pyo", line 50, in GetClass KeyError: '{00063001-0000-0000-C000-000000000046}' I post you a scratch of my code: class MSOutlook(object): def __init__(self, called_in_thread): self.outlookFound = 0 self._called_in_thread = called_in_thread if called_in_thread: pythoncom.CoInitialize() try: ----- Error here ----- self.oOutlookApp = win32com.client.gencache.EnsureDispatch("Outlook.Application") ---------------------- self.outlookFound = 1 except: err_msg = traceback.format_exc() print "MSOutlook: unable to load Outlook. Errors are:" print err_msg return None oOutlook = MSOutlook(False) Trying to find some help in the net I also found that when i compile the .exe using the setup.py file I have to specify an option like this (this example was for Excel, but it think it should work even for Outlook) python setup.py py2exe --progid "Outlook.Application" So I've tried to do this, but py2exe doesn't compiles this and tells me that --progid isn't a valid option... So have you any suggest for me? thanks a lot for your help... Michele |
From: Mark H. <mha...@sk...> - 2007-09-25 11:04:28
|
> Hi all... > I would ask you a question about win32com/py2exe problem in my app... > I have an app that needs to load Microsoft Outlook contacts, so I found > some code that allows to do that. It works well when I execute my app > using the python interpreter, but gives me a strange error when I > execute the .exe file obtained compiling my source with py2exe: > > Traceback (most recent call last): > File "library\outlookContacts\outlookContacts.pyo", line 19, in > __init__ > File "win32com\client\gencache.pyo", line 540, in EnsureDispatch > File "win32com\client\CLSIDToClass.pyo", line 50, in GetClass > KeyError: '{00063001-0000-0000-C000-000000000046}' You probably need to arrange for py2exe to generate and include the makepy stubs for Outlook etc. Have a look at the py2exe\py2exe\samples\pywin32\com_typelib directory in the py2exe distribution (check cvs via sourceforge if you can't see it in your distribution) for an example of this. Mark |
From: Michele P. - U. s. <mic...@un...> - 2007-10-05 16:58:09
|
Mark Hammond wrote: > You probably need to arrange for py2exe to generate and include the makepy > stubs for Outlook etc. Have a look at the > py2exe\py2exe\samples\pywin32\com_typelib directory in the py2exe > distribution (check cvs via sourceforge if you can't see it in your > distribution) for an example of this. > (Sorry for the late reply) Thanks, this work well! Only a little problem: I'm trying my software into a PC where there is a new Outlook version (the last was 97 and now 2000) that has a different number and I receive a KeyError (of course, since Outlook 97 aren't installed) Now I'm trying to change my py2exe script for include both Outlook versions, but I receive an error because I haven't Outlook 2000 on my pc... What can I do for make my program "version free"? Thanks! Michele --- My code: options = {"py2exe": {"compressed": 2, "optimize": 2, "typelibs" : [('{00062FFF-0000-0000-C000-000000000046}', 0, 8, 0), ('{00036001-0000-0000-C000-000000000046}', 0, 9, 0), ], }, } --- My error: File C:\Devel\python2.4\Lib\site-packages\win32com\client\makepy.py", line 194, in GenerateFromTypeLibSpec tlb = pythoncom.LoadRegTypeLib(typelibCLSID, major, minor, lcid) pywintypes.com_error: (-2147319779, 'Library not registered.', None, None) |
From: Mark H. <mha...@sk...> - 2007-10-08 21:37:25
|
> Mark Hammond wrote: > > You probably need to arrange for py2exe to generate and include the > makepy > > stubs for Outlook etc. Have a look at the > > py2exe\py2exe\samples\pywin32\com_typelib directory in the py2exe > > distribution (check cvs via sourceforge if you can't see it in your > > distribution) for an example of this. > > > > (Sorry for the late reply) > > Thanks, this work well! > Only a little problem: I'm trying my software into a PC where there is > a > new Outlook version (the last was 97 and now 2000) that has a different > number and I receive a KeyError (of course, since Outlook 97 aren't > installed) > > Now I'm trying to change my py2exe script for include both Outlook > versions, but I receive an error because I haven't Outlook 2000 on my > pc... > > What can I do for make my program "version free"? In most cases, later typelibs etc are compatible with earlier ones - so refering to the earliest typelib is often best. However, this means that you must have that earliest typelib available to generate the stub, and if you only have installed the latest version, this can be a PITA. This can generally be solved by generating the stub once on such a box, than having py2exe refer to this pre-generated stub which you store in source-control. See spambayes again for an example of doing this (we recently changed the way spambayes handles such typelib for exactly the same reason. Cheers, Mark > > Thanks! > Michele > > --- My code: > options = {"py2exe": > {"compressed": 2, > "optimize": 2, > "typelibs" : [('{00062FFF-0000-0000-C000-000000000046}', 0, 8, 0), > ('{00036001-0000-0000-C000-000000000046}', 0, 9, 0), > ], > }, > } > > > --- My error: > File C:\Devel\python2.4\Lib\site- > packages\win32com\client\makepy.py", > line 194, in GenerateFromTypeLibSpec > tlb = pythoncom.LoadRegTypeLib(typelibCLSID, major, minor, lcid) > pywintypes.com_error: (-2147319779, 'Library not registered.', None, > None) > > ----------------------------------------------------------------------- > -- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Py2exe-users mailing list > Py2...@li... > https://lists.sourceforge.net/lists/listinfo/py2exe-users |
From: Michele P. - U. s. <mic...@un...> - 2007-10-09 08:55:49
|
Mark Hammond wrote: >> What can I do for make my program "version free"? > > In most cases, later typelibs etc are compatible with earlier ones - > so refering to the earliest typelib is often best. However, this > means that you must have that earliest typelib available to generate > the stub, and if you only have installed the latest version, this can > be a PITA. True! > This can generally be solved by generating the stub once on such a > box, than having py2exe refer to this pre-generated stub which you > store in source-control. See spambayes again for an example of doing > this (we recently changed the way spambayes handles such typelib for > exactly the same reason. > Just seen, but I see that there is a "strange" typelibs usage, because you pass 5 arguments and makepy accept only 4. My and your py2exe script, on my machine (with py2exe and win32 with the last version) show me the same error: File "C:\Devel\python2.4\Lib\site-packages\py2exe\build_exe.py", line 254, in _run self.typelibs) File "C:\Devel\python2.4\Lib\site-packages\py2exe\build_exe.py", line 1514, in collect_win32com_genpy makepy.GenerateFromTypeLibSpec(info, bForDemand = False) File "C:\Devel\python2.4\Lib\site-packages\win32com\client\makepy.py", line 211, in GenerateFromTypeLibSpec typelibCLSID, lcid, major, minor = typelibInfo ValueError: too many values to unpack Your and my code: typelibs = [ ('{00062FFF-0000-0000-C000-000000000046}', 0, 9, 0, 'gen_py/outlook-9.py'), I tried to look for something like a py2exe replacement (or code modification) into the spambayes/windows code, but I find nothing... Where look for? Thanks another time :), Michele |
From: Mark H. <mha...@sk...> - 2007-10-09 20:49:59
|
It looks like py2exe is yet to be released with the changes necessary to support this, so you need to grab it from CVS. Cheers, Mark > Mark Hammond wrote: > > >> What can I do for make my program "version free"? > > > > In most cases, later typelibs etc are compatible with earlier ones - > > so refering to the earliest typelib is often best. However, this > > means that you must have that earliest typelib available to generate > > the stub, and if you only have installed the latest version, this can > > be a PITA. > > True! > > > This can generally be solved by generating the stub once on such a > > box, than having py2exe refer to this pre-generated stub which you > > store in source-control. See spambayes again for an example of doing > > this (we recently changed the way spambayes handles such typelib for > > exactly the same reason. > > > > Just seen, but I see that there is a "strange" typelibs usage, because > you pass 5 arguments and makepy accept only 4. My and your py2exe > script, on my machine (with py2exe and win32 with the last version) > show > me the same error: > > File "C:\Devel\python2.4\Lib\site-packages\py2exe\build_exe.py", > line > 254, in _run > self.typelibs) > File "C:\Devel\python2.4\Lib\site-packages\py2exe\build_exe.py", > line > 1514, in collect_win32com_genpy > makepy.GenerateFromTypeLibSpec(info, bForDemand = False) > File > "C:\Devel\python2.4\Lib\site-packages\win32com\client\makepy.py", line > 211, in GenerateFromTypeLibSpec > typelibCLSID, lcid, major, minor = typelibInfo > ValueError: too many values to unpack > > > Your and my code: > > typelibs = [ > ('{00062FFF-0000-0000-C000-000000000046}', 0, 9, 0, > 'gen_py/outlook-9.py'), > > > I tried to look for something like a py2exe replacement (or code > modification) into the spambayes/windows code, but I find nothing... > > Where look for? > > Thanks another time :), > Michele > > ----------------------------------------------------------------------- > -- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Py2exe-users mailing list > Py2...@li... > https://lists.sourceforge.net/lists/listinfo/py2exe-users |
From: Michele P. - U. s. <mic...@un...> - 2007-10-10 11:41:27
Attachments:
smime.p7s
|
Mark Hammond wrote: > It looks like py2exe is yet to be released with the changes necessary > to support this, so you need to grab it from CVS. > May be pywin32 not py2exe, because on the py2exe repo I can't find the makepy.py file that I find on the pywin32 one. However, on the pywin32 cvs (tinyurl.com/22tp25), the code of the GenerateFromTypeLibSpec it's the same than that on my dev box, that don't accept the file specification. Where I can find that code (or a patch)? Thanks, Michele |
From: Mark H. <mha...@sk...> - 2007-10-10 21:40:20
|
> Mark Hammond wrote: > > It looks like py2exe is yet to be released with the changes necessary > > to support this, so you need to grab it from CVS. > > > > May be pywin32 not py2exe, because on the py2exe repo I can't find the > makepy.py file that I find on the pywin32 one. > However, on the pywin32 cvs (tinyurl.com/22tp25), the code of the > GenerateFromTypeLibSpec it's the same than that on my dev box, that > don't accept the file specification. The 'typelibs' spec with the seemingly incorrect number of elements is processed by py2exe, and the first 4 elements passed to pywin32's makepy module. If you check out the CVS version of py2exe, you will see the code that does this. pywin32's CVS can be found via the 'pywin32' project at sourceforge, but I'm confident you don't need the CVS version of that. Cheers, Mark |