![](/img/trans.png)
[英]Problems with python file(.py) to executable(.exe) with cx_Freeze
[英]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.