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)]
}
}
)
在此先感谢您的帮助!
答
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
前行,并添加所有system32
到data_files
并添加skip_archive=True
内py2exe:
它的工作! 希望它可以在不同的计算机上运行...
我使用的指南是在[py2exe](http://www.py2exe.org/index.cgi/IncludingTypelibs)的网站上!
多年来,我使用Py2exe,最后有无数的错误和问题后,我开始使用PyInstaller,它已经好多了,尝试使用https://mborgerson.com/creating-an-executable-from-a-python-script并查看是否解决了问题,如果解决了问题,那么你已经设置好了,如果没有,它可能与它的执行方式有关,而不是它如何被打包(IE,python运行在一个目录中,或者具有不同的权限) –