Py2exe导入错误:没有模块名为壳(Py2exe ImportError: No module n

2019-10-23 22:39发布

我的代码是:

from win32com.shell import shellcon
from win32com.shell.shell import ShellExecuteEx

和正常工作在IDLE,但之后我做的exe我得到的错误:

File "Myfile.py", line 1, in <module>
ImportError: No module named shell

为什么不能py2exe进口win32com.shell

Answer 1:

以下可以帮助你: py2exe.org win32com.shell

链接描述为是win32com执行某些“神奇”,允许在运行时COM扩展的负载问题。 扩展驻留在站点包的win32comext目录,不能直接装。 对于win32com的__path__变量被修改为指向两个win32com和win32comext。 这个运行时间变化__path__为py2exe跳闸了modulefinder所以必须提前告知。

以下是代码,理应从其中讨论了同样的问题SpamBayes的源代码,所以类似的方法可以为你工作:

# ...
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
try:
    # py2exe 0.6.4 introduced a replacement modulefinder.
    # This means we have to add package paths there, not to the built-in
    # one.  If this new modulefinder gets integrated into Python, then
    # we might be able to revert this some day.
    # if this doesn't work, try import modulefinder
    try:
        import py2exe.mf as modulefinder
    except ImportError:
        import modulefinder
    import win32com, sys
    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.


文章来源: Py2exe ImportError: No module named shell