2014-02-10 64 views
0

我有一個Python文件,標題爲my_python_file.py,它使用python-docx模塊創建了一個.doc文件。 .doc完美創建,沒有問題。問題出現在我構建我的腳本的.exe,並嘗試製作.doc。出現AssertionError問題。創建.exe文件時給出AsserionError的Python的docx模塊

這是我的EXE製造商代碼(exe_maker.py):

from distutils.core import setup 
import py2exe, sys, os 
sys.argv.append('py2exe') 

setup(
    options = {'py2exe': {'bundle_files': 3, 'compressed': True, 'includes': ['lxml.etree', 'lxml._elementpath', 'gzip', 'docx']}}, 
    windows = [{'script': "my_python_file.py"}], 
    zipfile = None, 
) 

看來,移動python腳本到不同的位置產生誤差。

File "docx.pyc", line 1063, in savedocx 
AssertionError 

這是savedocx行:

document = newdocument() 
[...] 
coreprops = coreproperties(title=title, subject=subject, creator=creator, keywords=keywords) 
approps = appproperties() 
contenttypes2 = contenttypes() 
websettings2 = websettings() 
wordrelationships2 = wordrelationships(relationships) 
path_save = "C:\output" 
savedocx(document, coreprops, approps, contenttypes2, websettings2, wordrelationships2, path_save) 

savedox很好當作使用它工作時,它不是一個.exe文件。

如何使docx模塊正常工作?當我製作exe文件時,是否還需要添加其他路徑/變量?

在此先感謝

+1

引發AssertionError的線是什麼?另外,代碼是在GitHub上還是我可以檢查的地方?我恐怕沒有太多可以繼續下去。另請注意,後Word 2007文件被賦予了'.docx'擴展名,而不是舊的'.doc'擴展名。我也看到PIL或Pillow不在依賴列表中。 – scanny

+0

我添加了'savedoc'的行,但正如我在問題中所說的那樣,它不是'savedoc'行的編程問題,因爲它在'.exe'沒有構建時可以很好地工作。提前致謝。 –

+0

我也在''nncludes'行中加了'PIL',但它也不行。 –

回答

0

我通過edditing的api.py文件,該文件位於系統的Python的文件夾的docx雞蛋文件夾的解決了這個問題。

更改此:

_thisdir = os.path.split(__file__)[0] 
_default_docx_path = os.path.join(_thisdir, 'templates', 'default.docx') 

要這樣:

thisdir = os.getcwd() 
_default_docx_path = os.path.join(thisdir, 'templates', 'default.docx') 

第一個被採取實際運行的程序並將其添加到路徑查找templates文件夾。
C:\myfiles\myprogram.exe\templates\default.docx

該解決方案只採用路徑,而不是正在運行的程序。
C:\myfiles\templates\default.docx

0

而是改變某些庫文件的,我覺得它更容易和更清潔告訴蟒蛇,DOCX明確到哪裏尋找模板,即:

document = Document('whatever/path/you/choose/to/some.docx') 

這有效地解決了py2exe和DOCX路徑問題。

相關問題