Следующее может помочь вам: py2exe.org win32com.shell
Ссылка описывает проблему в том, что win32com выполняет некоторую «магию», чтобы разрешить загрузку COM-расширений во время выполнения. Расширения находятся в каталоге win32comext в пакетах сайтов и не могут быть загружены напрямую. Изменена переменная __path__ для win32com, чтобы указать на win32com и win32comext. Это изменение времени выполнения для __path__ отключает модуль-модуль для py2exe, поэтому его нужно заранее сообщить.
Ниже приведен код, предположительно, из исходного кода для 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.
Это был один из самых ПОЛЕЗНЫХ коментариев я увиденный в страсти –