我使用Python 3.6编写了一个脚本,用户通过tkinter GUI
输入数据,然后将其与一些额外的文本一起打印到WORD文档中。
所有在我的Wing IDE中工作正常但是一旦将其转换为.exe
,当我使用py2exe
/ cx_Freeze
或者只是打开并立即关闭窗口时它会显示错误我将其转换为pyinstaller
。
当我尝试转换包含标准库和tkinter的脚本时,它完全正常。但是一旦我加入docx
,它就不会因某种原因而工作。我现在知道Pyinstaller不想使用docx
。我还有其他方法可以将包含docx
的脚本转换为.exe
吗?
另外,我对编程很新。提前谢谢。
这是一个简短的例子:
from tkinter import *
from docx import Document
from docx.shared import Inches
document = Document('CRS-example.docx')
def Generate(event):
document.add_paragraph('Hello World')
document.save('TESTING.docx')
root = Tk()
frame = Frame(root)
frame.pack()
generate = Button(frame, text = 'Generate')
generate.bind('<Button-1>', Generate)
generate.pack()
root.mainloop()
最重要的是,cx_Freeze给了我这样的错误列表:
Traceback (most recent call last):
File "setupcx.py", line 18, in <module>
executables = [Executable("tkinter_test.py", base = base)])
File "C:\Development\Python\lib\site-packages\cx_Freeze\dist.py", line 349, in setup
distutils.core.setup(**attrs)
File "C:\Development\Python\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "C:\Development\Python\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "C:\Development\Python\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Development\Python\lib\distutils\command\build.py", line 135, in run
self.run_command(cmd_name)
File "C:\Development\Python\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "C:\Development\Python\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Development\Python\lib\site-packages\cx_Freeze\dist.py", line 219, in run
freezer.Freeze()
File "C:\Development\Python\lib\site-packages\cx_Freeze\freezer.py", line 616, in Freeze
self.finder = self._GetModuleFinder()
File "C:\Development\Python\lib\site-packages\cx_Freeze\freezer.py", line 340, in _GetModuleFinder
finder.IncludeModule(name)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 651, in IncludeModule
namespace = namespace)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 311, in _ImportModule
deferredImports, namespace = namespace)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 404, in _InternalImportModule
parentModule, namespace)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 417, in _LoadModule
namespace)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 486, in _LoadPackage
self._LoadModule(name, fp, path, info, deferredImports, parent)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 464, in _LoadModule
self._RunHook("load", module.name, module)
File "C:\Development\Python\lib\site-packages\cx_Freeze\finder.py", line 537, in _RunHook
method(self, *args)
File "C:\Development\Python\lib\site-packages\cx_Freeze\hooks.py", line 615, in load_tkinter
tclSourceDir = os.environ["TCL_LIBRARY"]
File "C:\Development\Python\lib\os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'TCL_LIBRARY'
这也是我的cx_Freeze setup.py,其中我遇到了错误:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {"includes": ["tkinter"]}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name = "simple_Tkinter",
version = "0.1",
description = "Sample cx_Freeze Tkinter script",
options = {"build_exe": build_exe_options},
executables = [Executable("tkinter_test.py", base = base)])