py2exe&win32 OLEObject错误

问题描述:

我试图用py2exe将我的程序编译成exe文件。不幸的是,我使用win32com复制从Excel图表和使用(Shapes.PasteSpecial(ppPasteOLEObject)将它们嵌入到PowerPoint中,我不断收到此错误:py2exe&win32 OLEObject错误

File "win32com\client\__init__.pyc", line 170, in __getattr__ 
AttributeError: ppPasteOLEObject`. 

谷歌搜索还没有真正的帮助。当我在python中运行它时,该脚本完美工作,所以我知道问题出在win32com上。使用makepy.py来包含typelib也没有帮助,但也许我的setup.py是错误的。所以这里是:

import sys 
from distutils.core import setup 
import py2exe 
from glob import glob 
from os.path import normpath 
import matplotlib 

sys.setrecursionlimit(5000) 
data_files=[("Microsoft.VC90.CRT",glob(normpath(
    r'C:/Program Files/Microsoft Visual Studio 9.0/VC/redist/x86/Microsoft.VC90.CRT/*.*'))), 
    ("images",glob(normpath("images/*.PNG"))), 
    ("ppttemplate",glob(normpath("ppttemplate/*.pptx")), 
    (".",normpath("C:/windows/system32/ole32.dll")), 
    (".",normpath("C:/Anaconda2/envs/py27/Library/bin/MSVCP90.dll"))) 
    ] 
data_files.extend(matplotlib.get_py2exe_datafiles()) 

setup(
    data_files=data_files, 
    console=['Main.py'], 
    options={"py2exe":{"includes":["lxml.etree","lxml._elementpath","gzip", 
         "sip","PyQt4.QtGui","PyQt4.QtCore","matplotlib"], 
         "excludes":["Tkinter"], 
         "typelibs":[('{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}', 0, 2, 8), 
            ('{00020430-0000-0000-C000-000000000046}', 0, 2, 0)] 
            } 
            } 
            ) 

在此先感谢您的帮助!

+0

多年来,我使用Py2exe,最后有无数的错误和问题后,我开始使用PyInstaller,它已经好多了,尝试使用https://mborgerson.com/creating-an-executable-from-a-python-script并查看是否解决了问题,如果解决了问题,那么你已经设置好了,如果没有,它可能与它的执行方式有关,而不是它如何被打包(IE,python运行在一个目录中,或者具有不同的权限) –

Got it!一个只需要包括相关的dll,并设置skip_archive=True ...(我包括py2exe抱怨的一切)。

通过添加:

sys.path.append("C:\\Program Files\\Microsoft VisualStudio9.0\\VC\\redist\\x86\\Microsoft.VC90.CRT") 
sys.path.append("C:\\windows\\system32") 

data_files前行,并添加所有system32data_files并添加skip_archive=Truepy2exe:它的工作! 希望它可以在不同的计算机上运行...

我使用的指南是在[py2exe](http://www.py2exe.org/index.cgi/IncludingTypelibs)的网站上!