我使用最新版本的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目录中获取了可执行文件。它跑得很好。
现在,如果我将可执行文件移动到同一台计算机上的其他目录中。我得到以下错误对话框:
我的猜测是我需要在可执行文件中嵌入一些内容,使其不仅可以在我的计算机上运行,而且可以在任何其他没有安装Python的计算机上运行,方法是更改 setup.py
文件。可能会遗漏什么?
答案 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上进行了测试。