我编写了一个VPython模拟代码,但我无法使用cx_Freeze将其压缩为exe。我认为这是因为VPython模块因为cx_Freeze在压缩其他不使用VPython的程序时起作用。
详细步骤:
这是我的测试模拟程序:
CL > 1
这是我的设置文件:
from vpython import *
### Simulation ###
def run_simulation(r):
ball = sphere(radius=r)
run_simulation(5)
我转到这两个所在的文件夹,按住shift并右键单击,然后按Windows PowerShell。在shell中我输入:python setup.py build
假定的结果是一个名为“build”的新文件夹(具有可执行文件)是在现有文件夹中创建的,但我在PowerShell上遇到了这个错误:
KeyError:'TCL_LIBRARY'
对于西蒙的回答: 这是我尝试运行它时出现的错误图片,以及我的设置文件中的新代码。
from cx_Freeze import setup, Executable
setup(name='Test',
version='0.1',
description='Parse stuff',
executables=[Executable('Test.py')])
答案 0 :(得分:0)
由于某种原因,你的脚本需要tkinter(或者Vpython可能),因为它缺少“TCL_LIBRARY”和“TK_LIBRARY”(总是在一起),这只是几个文件夹(注意这不是实际的名称)包含tkinter小部件的文件夹)。
很简单地添加丢失的文件夹。
最简单的方法是:
environ
模块中的os
功能。请注意,第一个仅适用于仅在构建文件夹而非msi中创建应用程序的情况。如果你想正确地做,那就去第二个!
我不知道你的Python版本或路径,所以我要留下给你的文件路径。
TCL_LIBRARY实际上位于tcl
,是一个名为tcl8.6
的文件夹,TK_LIBRARY名为tk8.6
。只需在构建文件夹中包含这些内容即可。
您需要使用os.environ
将其复制到您的构建文件夹中:
os.environ['TCL_LIBRARY'] = '<path to Python>\\Python36-32\\tcl\\tcl8.6'
os.environ['TK_LIBRARY'] = '<path to Python>\\Python36-32\\tcl\\tk8.6'
除了导入os
并使用environ:
from cx_Freeze import setup, Executable
import os
os.environ['TCL_LIBRARY'] = '<path to Python>\\Python36-32\\tcl\\tcl8.6'
os.environ['TK_LIBRARY'] = '<path to Python>\\Python36-32\\tcl\\tk8.6'
setup(name='Test',
version='0.1',
description='Parse stuff',
executables=[Executable('Test.py')])
有。错误现在应该消失。