2016-11-03 79 views
0

我試圖用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運行在一個目錄中,或者具有不同的權限) –

回答

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前行,並添加所有system32data_files並添加skip_archive=Truepy2exe:它的工作! 希望它可以在不同的計算機上運行...

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