• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [PYINSTALLER] Konwersja aplikacji PyQt5 na plik .exe

Object Storage Arubacloud
+1 głos
332 wizyt
pytanie zadane 6 maja 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 11 maja 2022 przez Marak123

Witam smiley

Napisałem aplikację okienkową za pomocą PyQt5 i chcę aby to był jeden plik który odpalasz i masz aplikacji a nie żeby trzeba było kompilować itp. ale tutaj pojawia się problem ponieważ używam pyinstaller-a do stworzenia pliku .exe z tej aplikacji ale wyskakuje mi kod błędu "3221225477" nie wiem czemu.

Postanowiłem to sprawdzić pisząc inną prostą aplikacje w PyQt5 jeden plik .py to jest kod:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class window(QtWidgets.QWidget, QtCore.QObject):
    def __init__(self, parent=None):
        super(window, self).__init__(parent)
        self.resize(500,600)
        self.setWindowTitle("Base APP")

        self.button = QtWidgets.QPushButton("Click me!")
        self.button.clicked.connect(self.on_click)

        self.layout = QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.button)
        self.setLayout(self.layout)

        self.label = QtWidgets.QLabel(self)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setStyleSheet("QLabel { background-color : #A0A0A0; color : #FFFFFF; font-size : 30px; }")
        self.label.setText("Hello World!")
        self.label.setGeometry(0, 0, 500, 100)
        self.label.show()

    def on_click(self):
        print("Clicked!")


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = window()
    window.show()
    sys.exit(app.exec_())

i normalnie się odpala gdy to robię komendą:

python ./main.py

ale gdy to skonwertuje na plik .exe to już się nie odpala i wyskakuje ten sam kod błędu i tylko to i nic poza tym. Kombinowałem na różne sposoby zmieniając kod itp. ale nic nie działa a w internecie nic sensownego co może pomoc nie znalazłem.

Wie ktoś dlaczego tak może być, jak to naprawić albo coś??

komentarz zamknięcia: Problem rozwiązanych
komentarz 8 maja 2022 przez VBService Ekspert (253,340 p.)

Spróbuj uruchomić pyinstaller z takimi parametrami

pyinstaller --onefile --log-level=DEBUG MojSkrypt.pyw

lub

pyinstaller --log-level=DEBUG MojSkrypt.pyw 2> build.txt

 

może uda się w ten sposób sprawdzić dokładniej, co jest przyczyną błędu po kompilacji do exe.

komentarz 8 maja 2022 przez Marak123 Stary wyjadacz (11,190 p.)

Ogólnie to w pliku build/warn-main.txt jest napisane ze brakuje modułów tylko nie wiem dlaczego brakuje jeżeli wszystko się odpala normalnie kompilując kod pythonem:


This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.

Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement

IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
            tracking down the missing module yourself. Thanks!

missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
missing module named grp - imported by shutil (optional), tarfile (optional), subprocess (optional), pathlib (delayed, optional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), subprocess (optional), pathlib (delayed, conditional, optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed), distutils.util (delayed, conditional, optional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
missing module named pep517 - imported by importlib.metadata (delayed)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by tty (top-level), getpass (optional)
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional)
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional)
missing module named console - imported by pyreadline.console.ansi (conditional)
missing module named startup - imported by pyreadline.keysyms.common (conditional), pyreadline.keysyms.keysyms (conditional)
missing module named sets - imported by pyreadline.keysyms.common (optional)
missing module named System - imported by pyreadline.clipboard.ironpython_clipboard (top-level), pyreadline.keysyms.ironpython_keysyms (top-level), pyreadline.console.ironpython_console (top-level), pyreadline.rlmain (conditional)
missing module named StringIO - imported by pyreadline.py3k_compat (conditional)
missing module named IronPythonConsole - imported by pyreadline.console.ironpython_console (top-level)
missing module named clr - imported by pyreadline.clipboard.ironpython_clipboard (top-level), pyreadline.console.ironpython_console (top-level)
missing module named org - imported by pickle (optional)
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level), test.support (delayed, conditional, optional)
missing module named pyimod03_importers - imported by C:\Programs\anaconda3\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (top-level)

 

1
komentarz 11 maja 2022 przez Marak123 Stary wyjadacz (11,190 p.)

[Aktualizacja, problem rozwiązany]

Po ciężkiej i długiej walce z próbą kompilacji aplikacji pyqt5 do pliku .exe za pomocą innych oprogramowań niż pyinstaller, postanowiłem powalczyć właśnie z nim i udało się. 

Okazało się ze instalując pyinstaller za pomocą

pip install pyinstaller

zainstalował on się na dystrybucji anaconda3 (kompilatorze tej dystrybucji) którego ścieżki do plików python i pip jest dodana w "zmiennych środowiskowych", a kompilując i instalując biblioteki w vscode domyślny kompilator python był ustawiony na ten zainstalowany przeze mnie w "C:\Python" a nie "C:\Programs\anaconda3" więc python pochodzący od dystrybucji anaconda3 nie miała bibliotek potrzebnych do kompilacji i dlatego był error. 

Po zainstalowaniu pyinstaller-a za pomocą pipa w "C:\Python" kompilacja poszła gładko, a sama aplikacja uruchamia się poprawnie.

 

Dla osób który mają podobny problem ze coś nie działa (zwłaszcza tych początkujących) polecam sprawdzić czy ścieżka do kompilatora jest odpowiednia, lub uruchamiać kompilatory ze ścieżek bezwzględnych. 

Podobne pytania

+1 głos
0 odpowiedzi 204 wizyt
pytanie zadane 3 sierpnia 2021 w Python przez Pico Obywatel (1,330 p.)
0 głosów
0 odpowiedzi 187 wizyt
pytanie zadane 18 sierpnia 2022 w Python przez xkamiz Użytkownik (500 p.)
0 głosów
2 odpowiedzi 463 wizyt
pytanie zadane 5 sierpnia 2019 w Python przez marcinconn Obywatel (1,560 p.)

92,570 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...