[英]py2exe PackageNotFoundError
我目前正在尝试使用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之后,在正确的位置添加\\ templates \\文件夹,然后手动重新解压缩,但是,我得到了同样的错误。
我的setup.py如下:
from distutils.core import setup
import py2exe
setup(
windows=[{'script': 'AutoFormatter.py'}],
options={
'py2exe':
{
'includes': ['lxml.etree', 'lxml._elementpath', 'gzip', 'docx'],
}
}
)
我正在使用Python 2.7.8和py2exe 0.6.9在Windows 7计算机上运行该程序。
这可能为时已晚,但我也遇到了同样的麻烦。 我不知道是否已将python-docx编译成单个可执行文件,尽管我找到了解决方案。
我在使用python2.7的pyinstaller上,基本上是同一回事。 我希望您将其冻结在一个目录中,而不是一个文件中。 如果要冻结到一个文件,则此方法将无效
在此处下载(Mediafire链接)
放入
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.