Python-скрипт для запуска с помощью cx_Freeze, exe ничего не делает - PullRequest
0 голосов
/ 17 октября 2018

Я решил для практики, я бы написал Passwordgenerator и сделал бы его исполняемым.
Мой скрипт работает так, как задумано, и компиляция также работает, но когда я запускаю exe-файл, ничегослучается.Я использую систему Windows 10 и использую Python 3.6.x, и я не новичок в самом Python.

Я просматривал различные страницы в Интернете, но я не нашел ничего, что помогло бы мне в этой проблеме, моей первой проблемой было то, что компиляция не работала, но я уже нашел это решение.

Изменить: я попытался запустить EXE с помощью CMD, и я не получаю вывод, вместо этого я получаю новую строку.

Это установочный код:

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

Я благодарен за любые идеи.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Добавьте ожидание после кода, чтобы оно не заканчивалось немедленно.

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 .

0 голосов
/ 19 октября 2018

Удалите две строки

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

из сценария установки, и он должен работать.

base = "Win32GUI" говорит cx_Freeze не запускать окно консоли и должен использоваться только в том случае, еслиосновное приложение запускает графический интерфейс (например, с PySide, PyQt, Tk, ...).Предположительно, он также перенаправляет стандартный вывод с консоли, если вы запускаете исполняемый файл с уже запущенной консоли.В вашем случае у вас есть консольное приложение, и вы хотите, чтобы консоль запускалась и получала стандартный вывод.Это поведение частично объясняется в cx_Freeze документации .

Теперь, если вы запускаете свой исполняемый файл без использования cmd (например, дважды щелкнув его в Windows-Explorer), он запускает окно консоли, печатает вывод и закрывает консоль сразу после завершения выполнения.,В вашем примере сценария вы хотели бы иметь время для чтения выходных данных до закрытия консоли, поэтому вам нужно что-то, чтобы заставить ваш сценарий подождать до завершения, например, пока вы не нажмете клавишу.Для этого вы можете добавить

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

в конце вашего скрипта, см. Как заставить Python ожидать нажатой клавиши .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...