使用cx_Freeze将VPython程序转换为exe

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用cx_Freeze将VPython程序转换为exe相关的知识,希望对你有一定的参考价值。

我编写了一个VPython模拟代码,但我无法使用cx_Freeze将其压缩为exe。我认为这是因为VPython模块因为cx_Freeze在压缩其他不使用VPython的程序时起作用。

详细步骤:

这是我的测试模拟程序:

from vpython import *

### Simulation ###
def run_simulation(r):
    ball = sphere(radius=r)

run_simulation(5)

这是我的设置文件:

from cx_Freeze import setup, Executable

setup(name='Test',
      version='0.1',
      description='Parse stuff',
      executables=[Executable('Test.py')])

我转到这两个所在的文件夹,按住shift并右键单击,然后按Windows PowerShell。在shell中我输入:python setup.py build

假定的结果是一个名为“build”的新文件夹(具有可执行文件)是在现有文件夹中创建的,但我在PowerShell上遇到此错误:

KeyError:'TCL_LIBRARY'

对于Simon的回答:这是我尝试运行它时出现的错误的图片,以及我在设置文件中的新代码。

错误:Syntax error on PowerShell

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = C:Usersmohamed-tayehAppDataLocalProgramsPythonPython36-32	cl	cl8.6

setup(name='Test',
    version='0.1',
    description='Parse stuff',
    executables=[Executable('Test.py')])
答案

由于某种原因,你的脚本需要tkinter(或者Vpython可能),因为它缺少“TCL_LIBRARY”和“TK_LIBRARY”(它们总是在一起),它们只是几个文件夹(请注意,这不是包含文件夹的实际名称) tkinter小部件)。

So what do I do?

很简单地添加丢失的文件夹。

最简单的方法是:

  • 手动将它们复制到构建文件夹中
  • environ模块中使用os函数。

请注意,第一个仅适用于仅在构建文件夹而不是msi中创建应用程序的情况。如果你想正确地做,那么去第二个!


我不知道你的Python版本或路径,所以我将离开制作文件路径给你。


TCL_LIBRARY实际上位于tcl,是一个名为tcl8.6的文件夹,TK_LIBRARY被命名为tk8.6。只需在构建文件夹中包含这些内容。

您需要使用os.environ将其复制到您的构建文件夹中:

os.environ['TCL_LIBRARY'] = '<path to Python>Python36-32	cl	cl8.6'
os.environ['TK_LIBRARY'] = '<path to Python>Python36-32	cl	k8.6'

So what should my script look like now?

除了导入os并使用environ之外,您的脚本应该看起来几乎相同:

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = '<path to Python>Python36-32	cl	cl8.6'
os.environ['TK_LIBRARY'] = '<path to Python>Python36-32	cl	k8.6'

setup(name='Test',
    version='0.1',
    description='Parse stuff',
    executables=[Executable('Test.py')])

那里。错误现在应该消失。

以上是关于使用cx_Freeze将VPython程序转换为exe的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_freeze 将 .py 转换为 .exe 时出错

使用 cx_freeze 将脚本转换为 .exe 时如何包含 tkinter?

使用 cx_Freeze 将 Python 转换为 exe 时 Scipy 和 Cython 出现 AttributeError

使用 cx_freeze 将 .py 转换为可执行文件时出错

可执行文件 = 可执行文件 python 错误(尝试使用 cx_freeze 将 pygame 转换为可执行文件)

尝试使用 cx_freeze 将 python 文件转换为可执行文件时出错