从script.py运行Python可执行文件时出错

时间:2014-01-03 05:58:22

标签: python python-2.7 cx-freeze

我使用最新版本的cx_freeze为Python 2.7创建了.exe文件中的可执行文件.py,其中包含以下 setup.py 文件:

import sys
from cx_Freeze import setup, Executable

setup(
    name = "Any",
    version = "1.0",
    description = "Any",
    executables = [Executable("D:\\script.pyw", base = "Win32GUI")])

我从命令行运行它:

python setup.py build

然后我按预期在build目录中获取了可执行文件。它跑得很好。

现在,如果我将可执行文件移动到同一台计算机上的其他目录中。我得到以下错误对话框:

enter image description here

我的猜测是我需要在可执行文件中嵌入一些内容,使其不仅可以在我的计算机上运行,​​而且可以在任何其他没有安装Python的计算机上运行,​​方法是更改​​ setup.py 文件。可能会遗漏什么?

1 个答案:

答案 0 :(得分:1)

我正在构建已编译的可执行文件,如下所示。

使用以下版本:

OS: Windows-7-6.1.7601-SP1
Python: 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]
cx_Freeze: 4.2.3

我有这段代码hello_tkinter.py

from Tkinter import *
import ttk

class Main(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)

        self.frame = ttk.Frame(self)
        self.frame.pack(expand=True, fill=BOTH, padx=5, pady=5)

        self.button = ttk.Button(self.frame, text="Test")
        self.button.pack(expand=True, fill=BOTH)

root = Main()
root.mainloop()

我将此脚本称为cx_freeze

c:\Python27\Scripts\cxfreeze.bat hello_tkinter.py --target-dir=Bin/tkinter --base-name=Win32GUI --target-name=hello_tkinter.exe

我得到的目录包含:

tcl\
tk\
_ctypes.pyd
_tkinter.pyd
bz2.pyd
hello_tkinter.exe
MSVCR90.dll
python27.dll
tcl85.dll
tk85.dll
unicodedata.pyd

它工作正常,即使我移动目录。你确实拿走了整个目录,而不仅仅是exe,不是吗?可执行文件也在未安装Python的Windows XP上进行了测试。