питон.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
Дайте мне знать, как это работает :-)