Size: 2138
Comment: converted to 1.6 markup
|
Size: 807
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= The Problem = I used [[http://tgolden.sc.sabren.com/python/winshell.html|winshell]] from Tim Golden - a thin wrapper around Windows Shell-Functions. winshell.py starts with {{{ #!python from win32com import storagecon from win32com.shell import shell, shellcon }}} py2exe learns, that something is missing: {{{ The following modules appear to be missing ['Interface', 'intSet', 'mxDateTime.__version__', 'win32com.shell'] }}} and starting the programm leaves: {{{ Traceback (most recent call last): File "xxxxxx.py", line 33, in ? File "xxxxxxx.pyo", line 9, in ? File "winshell.pyo", line 27, in ? ImportError: No module named shell }}} in the log.file. = Explanation = win32com does some magic in order to allow loading of COM extensions during run time. The actual extensions reside in the win32comext directory under site-packages and can't be loaded directly. win32com's [[http://docs.python.org/tut/node8.html#SECTION008430000000000000000|__path__]] variable has been changed to point to both win32com and win32comext. py2exe's modulefinder can't handle runtime changes in __path__ so we have to tell it about the change beforehand. = Solution = Without shame I browsed [[http://cvs.sourceforge.net/viewcvs.py/spambayes/|Spambayes source code]] and found the code to fix it. {{{ #!python # By default, the installer will be created as dist\Output\setup.exe. import time import sys # ModuleFinder can't handle runtime changes to __path__, but win32com uses them try: # if this doesn't work, try import modulefinder import py2exe.mf as modulefinder import win32com for p in win32com.__path__[1:]: modulefinder.AddPackagePath("win32com", p) for extra in ["win32com.shell"]: #,"win32com.mapi" __import__(extra) m = sys.modules[extra] for p in m.__path__[1:]: modulefinder.AddPackagePath(extra, p) except ImportError: # no build path setup, no worries. pass from distutils.core import setup import py2exe # ... # The rest of the setup file. # ... }}} And this worked. |
<<BR>> Hi! Let me begin by stating my name - Dirty however I do not like when individuals use my complete name. It's not a typical thing however exactly what she likes doing is mountain biking but she's believing on beginning something brand-new. Office supervising is exactly what he does for a living. North Carolina is the place I love the majority of. She's been dealing with her website for some time now. Inspect it out here: http://Www.Railroadpics.com/__media__/js/netsoltrademark.php?d=featur.vs120084.hl-users.com%2Fbys%2Findex.php%3Fmod%3Dusers%26action%3Dview%26id%3D995357<<BR>> <<BR>> Here is my web page - [[http://Www.Railroadpics.com/__media__/js/netsoltrademark.php?d=featur.vs120084.hl-users.com%2Fbys%2Findex.php%3Fmod%3Dusers%26action%3Dview%26id%3D995357|Marriage Help]]<<BR>> |
Hi! Let me begin by stating my name - Dirty however I do not like when individuals use my complete name. It's not a typical thing however exactly what she likes doing is mountain biking but she's believing on beginning something brand-new. Office supervising is exactly what he does for a living. North Carolina is the place I love the majority of. She's been dealing with her website for some time now. Inspect it out here: http://Www.Railroadpics.com/__media__/js/netsoltrademark.php?d=featur.vs120084.hl-users.com%2Fbys%2Findex.php%3Fmod%3Dusers%26action%3Dview%26id%3D995357<<BR>>
Here is my web page - Marriage Help