питон.exe не работает должным образом

Я загрузил pyinstaller, чтобы превратить мои скрипты python в исполняемую программу. У меня есть основной скрипт ((homepage.py) что при запуске будет отображаться окно с двумя кнопками (button1 и button2). Каждая из двух кнопок, если щелкнуть, будет запускать соответствующий скрипт python (input1.py или input2.py) отображает окно, в котором пользователь вводит данные для графического отображения в excel.

мои скрипты работают правильно, когда я запускаю их в Spyder через Anaconda. Однако, когда я переворачиваю свой основной сценарий (Homepage.py) в исполняемую программу и запустите ее, появится главное окно с двумя кнопками, но когда я нажимаю любую из двух кнопок, соответствующее окно не появляется и программа закрывается. Кто-нибудь знает, почему это произошло? Нужно ли мне перевернуть ... input1.py и input2.py в .exe программы, а также, как я сделал с homepage.py?

в моих сценариях, когда мне нужно нажать любую из кнопок, я бы скрыть главное окно и показать новое окно. Будет ли скрывать и показывать то, что заставляет мою программу работать неправильно, даже если она работает в Spyder?

главное окно (homapge.py) импорт и имя класса,

from PyQt5 import QtCore, QtGui, QtWidgets
from input1 import Ui_input1
from input2 import Ui_input2

class Ui_homepage(object):

button1 (input1.py) импорт и имя класса,

from PyQt5 import QtCore, QtGui, QtWidgets
import csv, os, subprocess, output1

class Ui_input1(object):

button2 (input2.py) импорт и имя класса,

from PyQt5 import QtCore, QtGui, QtWidgets
import csv, os, subprocess, output2

class Ui_input2(object):

кроме того, внутри обоих input1.py и input2.py, у меня есть функция кнопки, которая возвращается в Главное окно (homepage.py) при нажатии и внутри эту функцию я импортирую,

from homepage import Ui_homepage

в конце homepage.py, input1.py, и input2.py у меня есть это значение,

if __name__ == "__main__":
    import sys

Дайте мне знать, если вам нужно больше разъяснений или код.

EDIT 1:

код, который я использую в главном окне (homepage.py) который вызывает button1,

self.button1.clicked.connect(self.displayWindow1)

def displayWindow1(self):
    self.window = QtWidgets.QMainWindow()
    self.uiInput1 = Ui_input1()
    self.uiInput1.setupUi(self.window)
    self.homepage.hide()
    self.window.showMaximized()

код, который я использую в главном окне (homepage.py) который вызывает button2,

self.button2.clicked.connect(self.displayWindow2)

def displayWindow1(self):
    self.window = QtWidgets.QMainWindow()
    self.uiInput2 = Ui_input1()
    self.uiInput2.setupUi(self.window)
    self.homepage.hide()
    self.window.showMaximized()

изменить 2:

Я попытался запустить программу, после того как я изменен,

from input1 import Ui_input1
from input2 import Ui_input2

to,

import input1 
import input2

я получил эту ошибку в окне командной строки после ввода pyinstaller --onefile --оконная Домашняя страница.exe,

25160 WARNING: lib not found: MSVCR90.dll dependency of c:usersbj914e
appdatalocalcontinuumanaconda3Librarybinzlib.dll

и я получил эти ошибки в warnhomepage.txt файл,

missing module named resource - imported by posix, C:Usersbj914eDesktop
DAMSDAMS_Version_4homepage.py
missing module named posix - imported by os, C:Usersbj914eDesktop
DAMSDAMS_Version_4homepage.py
missing module named _posixsubprocess - imported by subprocess, C:Users
bj914eDesktopDAMSDAMS_Version_4homepage.py
missing module named org - imported by pickle, C:Usersbj914eDesktop
DAMSDAMS_Version_4homepage.py
missing module named readline - imported by cmd, code, pdb, C:Users
bj914eDesktopDAMSDAMS_Version_4homepage.py
excluded module named _frozen_importlib - imported by importlib, 
importlib.abc, C:Usersbj914eDesktopDAMSDAMS_Version_4homepage.py
missing module named _frozen_importlib_external - imported by 
importlib._bootstrap, importlib, importlib.abc, C:Usersbj914eDesktop
DAMSDAMS_Version_4homepage.py
missing module named _winreg - imported by platform, C:Usersbj914e
DesktopDAMSDAMS_Version_4homepage.py
missing module named _scproxy - imported by urllib.request
missing module named java - imported by platform, C:Usersbj914eDesktop
DAMSDAMS_Version_4homepage.py
missing module named 'java.lang' - imported by platform, C:Usersbj914e
DesktopDAMSDAMS_Version_4homepage.py, xml.sax._exceptions
missing module named vms_lib - imported by platform, C:Usersbj914e
DesktopDAMSDAMS_Version_4homepage.py
missing module named termios - imported by tty, C:Usersbj914eDesktop
DAMSDAMS_Version_4homepage.py, getpass
missing module named grp - imported by shutil, tarfile, C:Usersbj914e
DesktopDAMSDAMS_Version_4homepage.py
missing module named pwd - imported by posixpath, shutil, tarfile, 
http.server, webbrowser, C:Usersbj914eDesktopDAMSDAMS_Version_4
homepage.py, netrc, getpass
missing module named _dummy_threading - imported by dummy_threading, 
C:Usersbj914eDesktopDAMSDAMS_Version_4homepage.py
missing module named 'org.python' - imported by copy, C:Usersbj914e
DesktopDAMSDAMS_Version_4homepage.py, xml.sax
missing module named cPickle - imported by xlsxwriter.compat_collections
missing module named cStringIO - imported by cPickle
missing module named copy_reg - imported by cPickle, cStringIO
missing module named StringIO - imported by xlsxwriter.compatibility

обновление:

я смог исправить свою проблему. Решение оказалось очень простым. После I нажал одну из кнопок, программа закрылась, но в течение миллисекунды появилось и исчезло окно командной строки, которое я не заметил раньше, пока оно не было упомянуто мне в решении ниже. Решение двигалось все файлов данных, которые input1.py и input2.py используйте в файл dist с помощью .exe программы.

P. S: Некоторые программы записи слишком медленны для записи окна, которое появляется и исчезает, поэтому я попытался с помощью камеры смартфона (iPhone) и он смог его обнаружить.

2 ответов


У меня была очень похожая проблема, проблема была недостающим модулем(модулями). Ваш exe может использовать другие модули, которые pyinstaller не обнаружил. Для меня, как только я импортировал десятичный модуль, мой exe работал как шарм! Когда ваша домашняя страница.exe закрывается / падает, он сообщает вам, какой модуль отсутствует. У вас будет только миллисекунда, чтобы увидеть его, я записал свой экран и замедлил кадры, чтобы увидеть сообщение об ошибке. Нетрадиционно, возможно, но сработало на меня!


похоже, вы столкнулись с этим проблема (в основном то же самое, что и вы, но они используют TKinter).

предложение (снова) должен был импортировать весь файл как модуль в ваш homepage.py программа.

изменить так:

from input1 import Ui_input1
from input2 import Ui_input2 

в:

import input1 
import input2 

Дайте мне знать, как это работает :-)