【问题标题】:Pyinstaller generates the exe ok, but it does not workPyinstaller 生成的 exe ok,但它不起作用
【发布时间】:2019-04-06 22:56:42
【问题描述】:

我在运行 pyinstaller 生成的 exe 时遇到问题。 我得到的唯一警告是:

11171 WARNING: Hidden import "setuptools.msvc" not found!

其他都还好。当我运行程序时,两个窗口(cmd)打开并自动关闭。

我正在使用:

Python 3.4.4

Pyinstaller 3.4

Windows 10 64b

Pyinstaller 命令是

pyinstaller.exe asd/forcelogoff.py

代码就是它(工作正常):

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import paramiko
import os
import cffi
from tkinter import *
from tkinter import ttk, font
# Gestor de geometría (pack)
class Aplicacion():
    def __init__(self):
        self.raiz = Tk()
        self.raiz.title("Force Logoff Agent Asterisk")
        fuente = font.Font(weight='bold')
        self.etiq1 = ttk.Label(self.raiz, text="Agente:",
                           font=fuente)
        self.agente = StringVar()
        self.ctext1 = ttk.Entry(self.raiz,
                            textvariable=self.agente,
                            )
        self.separ1 = ttk.Separator(self.raiz, orient=HORIZONTAL)
        self.boton1 = ttk.Button(self.raiz, text="Aceptar",
                             command=self.aceptar)
        self.boton2 = ttk.Button(self.raiz, text="Cancelar",
                             command=sys.exit(0))
        self.etiq1.pack(side=TOP, fill=BOTH, expand=True,
                    padx=5, pady=5)
        self.ctext1.pack(side=TOP, fill=X, expand=True,
                     padx=5, pady=5)
        self.separ1.pack(side=TOP, fill=BOTH, expand=True,
                     padx=5, pady=5)
        self.boton1.pack(side=LEFT, fill=BOTH, expand=True,
                     padx=5, pady=5)
        self.boton2.pack(side=RIGHT, fill=BOTH, expand=True,
                     padx=5, pady=5)
        self.ctext1.focus_set()
        self.raiz.mainloop()

    def aceptar(self):
        PASSWD = "PASS"
        HOST = "IP"
        AGENT = "Agent/" + str(self.agente.get())
        client = paramiko.SSHClient()
        client.load_host_keys(os.path.join(os.path.dirname(__file__),     'known_hosts'))
        client.connect("%s" % (HOST), port=22, username="root",     password="%s" % (PASSWD), auth_timeout=10)
        stdin, stdout, stderr= client.exec_command("/pbx/obelix    /pbx/sbin/asterisk -rx 'agent logoff %s'" % (AGENT))
        print ("Conexión SSH exitosa.")
        print ("Ejecutando comando...")
        print (stdout.decode("utf-8"))
        print ("Cerrando conexión...")      
        stdout = stdout.read()
        client.close()
        print ("Conexión Cerrada")
        print (" ")

def main():
    mi_app = Aplicacion()
    return 0

if __name__ == '__main__':
    main()

有什么想法吗?

【问题讨论】:

  • 你试过 freeze 代替 pyinstaller 吗?
  • 我如何使用它?我没有在我的 python 路径中找到 freeze.py。
  • freeze 是一个类似于 pyinstaller 的编译器。它制作 exe 文件。
  • 它是 python 自己的?还是我需要安装它?
  • 需要安装。

标签: tkinter python-3.4 pyinstaller


【解决方案1】:

我无法让您的代码运行反编译。你在第 25 行看到 command=sys.exit(0)),这意味着应用程序一旦启动,它就会立即关闭。我使用 lambda 函数将其更改为 command=lambda: sys.exit(0)),以便在按下按钮时单独调用 sys.exit()。我不完全确定你是如何让它在你的系统上工作的。然后我使用

编译它
pyinstaller forcelogoff.py --onefile

它对我有用,虽然我在 Linux 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    相关资源
    最近更新 更多