我终于想通这win32clipboard.pyd
是 被包括在内,但是,win32clipboard.pyd
要看pywintypes27.dll
,这cx_Freeze是 不是 抄袭c:\windows\system32
。
短期破解是手动复制c:\windows\system32\pywintypes27.dll
到build\exe.win32-2.7
,然后setup.py bdist_msi
再次运行。
import os
import sys
import win32api
...
pywintypes_dll = 'pywintypes{0}{1}.dll'.format(*sys.version_info[0:2]) # e.g. pywintypes27.dll
build_exe_options = {..., "include_files": [ (os.path.join(win32api.GetSystemDirectory(), pywintypes_dll), pywintypes_dll)]}
...
setup( ...,
options = { 'build_exe': build_exe_options,
...,
},
...)
(最好对cx_Freeze进行改进以自动检测pywintype27.dll
依赖关系,但我想那总是在进行中。)