Python脚本用cx_冻结可执行文件,exe不执行任何操作

2024-07-07 07:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

为了练习,我决定编写一个Passwordgenerator并使其成为可执行文件。
我的脚本按预期运行,编译也正常,但当我运行exe文件时,什么都没有发生。 我运行的是Windows10系统,使用的是Python3.6.x,我对Python本身并不是初学者。在

我在网上查了很多网页,但是我没有找到任何对我有帮助的问题,我的第一个问题是编译不起作用,但我已经找到了解决办法。在

编辑:我试着用cmd运行exe,但是没有输出,而是得到了一个新行。在

这是设置代码:

import sys
from cx_Freeze import setup, Executable

build_exe_options = {"excludes": ["tkinter"]}
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(name="Password",
      version="1.0",
      description="Generates a password made of 20 characters",
      options={"build_exe": build_exe_options},
      executables=[Executable("pass.py", base=base)])

这是我的节目:

^{pr2}$

我很感激任何一种洞察力。在


Tags: 文件importbuild脚本可执行文件base系统sys
2条回答

拆下两条管路

if sys.platform == "win32":
   base = "Win32GUI"

从你的设置脚本,它应该可以工作。在

base = "Win32GUI"告诉cx_Freeze不要启动控制台窗口,并且只有在主应用程序启动GUI(例如使用PySide、PyQt、Tk,…)时才应该使用。如果您从已经启动的控制台运行可执行文件,它大概还会将标准输出从控制台重定向出去。在您的例子中,您有一个基于控制台的应用程序,因此您希望启动一个控制台并接收标准输出。此行为在cx_Freezedocumentation中有部分解释。在

现在,如果您不使用cmd运行可执行文件(例如在Windows资源管理器中双击它),它会启动一个控制台窗口,在那里打印输出,并在执行完成后立即关闭控制台。在示例脚本中,您希望在控制台关闭之前有时间读取输出,因此您需要的是告诉脚本在完成之前等待,例如直到您按下某个键。你可以添加

^{pr2}$

在脚本的末尾,请参见How do I make python to wait for a pressed key。在

在代码后面添加wait,这样就不会立即完成。在

import random
import string

for i in range(20):
   k = random.choice(string.ascii_letters)
   j = random.randint(0, 9)
   z = random.randint(1, 2)
   if z == 1:
      x = k
   if z == 2:
      x = j
   print(x, end=" ")

import time
time.sleep(5)   #<  Sleep for 5 seconds

你也可以用我的Python Executable maker

相关问题 更多 >