繁体   English   中英

Python脚本可使用cx_Freeze执行,exe无功能

[英]Python script to executable with cx_Freeze, exe does nothing

为了实践目的,我决定编写一个Passwordgenerator并使它成为可执行文件。
我的脚本正在按预期运行,并且编译也可以正常运行,但是当我运行exe文件时,没有任何反应。 我运行Windows 10系统并使用Python 3.6.x,但我不是python本身的初学者。

我在Internet上浏览了各个页面,但是在该问题上找不到任何帮助我的东西,我的第一个问题是编译不起作用,但是我已经找到了解决方案。

编辑:我试图用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)])

这是我的程序:

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=" ")

我很感谢任何见识。

删除两行

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

从您的安装脚本,它应该工作。

base = "Win32GUI"告诉cx_Freeze不要启动控制台窗口,仅当主应用程序启动GUI时才应使用(例如,使用PySide,PyQt,Tk等)。 如果您从已经启动的控制台运行可执行文件,则可能还会将标准输出重定向到控制台之外。 在您的情况下,您有一个基于控制台的应用程序,因此希望启动控制台并接收标准输出。 cx_Freeze 文档中部分解释了此行为。

现在,如果您在不使用cmd的情况下运行可执行文件(例如,通过在Windows-Explorer中双击它),它将启动控制台窗口,在该窗口中打印输出,并在执行完成后立即关闭控制台。 在示例脚本中,您希望有时间在控制台关闭之前读取输出,因此您需要的是告诉脚本在完成之前要等待的内容,例如直到按下某个键。 你可以加

input("Press Enter to continue...")

为此,请在脚本末尾查看如何使python等待按下键

在代码后添加等待,以便它不会立即完成。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM