我目前正在尝试使用py2exe将一个Tkinter应用程序打包成一个.exe文件。打包工作得很好,直到某一点,程序才能正常工作。但是,当我调用某个函数时,运行.exe文件会记录以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyc", line 1532, in __call__
File "/Users/Gordon/Gordon's Files/AutoFormatter/lib\formatterApp.py", line 58, in go
File "formatter.pyc", line 72, in take
File "docx\api.pyc", line 25, in Document
File "docx\opc\package.pyc", line 116, in open
File "docx\opc\pkgreader.pyc", line 32, in from_file
File "docx\opc\phys_pkg.pyc", line 31, in __new__
PackageNotFoundError: Package not found at 'C:\Users\Gordon\Gordon's Files\AutoFormatter\dist\library.zip\docx\templates\default.docx'在最初运行py2exe时,我检查了\docx\文件夹,发现py2exe实际上并没有复制\templates\文件夹。但是,在手动解压缩模板,在正确的位置添加\ library.zip \文件夹,然后手动重新压缩之后,我得到了相同的错误。
我的setup.py如下:
from distutils.core import setup
import py2exe
setup(
windows=[{'script': 'AutoFormatter.py'}],
options={
'py2exe':
{
'includes': ['lxml.etree', 'lxml._elementpath', 'gzip', 'docx'],
}
}
)我使用Python2.7.8和py2exe 0.6.9在Windows7计算机上运行该程序。
发布于 2016-08-16 13:30:49
这可能太晚了,但我也遇到了同样的麻烦。我不知道python-docx是不是被编译成一个单独的可执行文件,但我还是找到了解决方案。
我用的是pyinstaller和python2.7,本质上是一样的。我希望您冻结在一个目录中,而不是一个文件中。如果你冻结到一个文件这将不起作用
下载this here(媒体链接)
把它放在
C:\Users\Gordon\Gordon's Files\AutoFormatter\dist\library.zip\docx\templates\default.docx基本上,无论你的.exe在哪里。
希望这能起到作用
基于我在我自己的目录和docx模块中的搜索,当您创建文档时:
doc = Document()
doc.save('hello.docx')它拉出一个模板供你使用,如果你不创建自己的模板,它将使用python-docx本身提供的默认模板。
不要引用我的话,但我相信python-docx在通过python执行default.docx模板时会在自己的目录中查找它。
由于我们编译了脚本,因此路径更改为.exe所在的目录,但是pyinstaller (或在您的示例中为py2exe)不会将模板包含在dist文件夹中,这将创建PackageNotFoundError
https://stackoverflow.com/questions/31007484
复制相似问题