Seite 1 von 2
Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Donnerstag 21. Januar 2021, 11:58
von DMD-OL
Halli hallo
Ich suche einen Weg, die Pyinstaller-Ausgabe in der Python-Console (unten links in Python; weiß leider nicht, wie das Feld korrekt genannt wird)
in einem tkinter Textfeld meiner eigenen GUI darstellen zu lassen. Hab da schon einiges gesucht/gelesen, aber bisher war nix wirklich passendes dabei.
Ich habe jetzt die Idee, ob ich nicht vielleicht direkt im Pythonmodul 'pyinstaller' (das ich ja importiert habe, um in Python damit zu arbeiten) Änderungen vornehmen kann.
Falls da was schiefgeht

, lade ich es einfach neu runter

.
Ich habe mir das pyinstaller-Modul mal angeschaut. In dem Ordner gibt es eine Datei ganz unten die heißt: log.py
Die ist denke ich verantwortlich für die pyinstaller-Ausgabe. Kann man die z.B. mit einem return-Befehl dazu bringen, mir die ganzen Ausgaben an mein Textfeld zu schicken? Oder ist das zu "heiß" dort etwas zu verändern?
Würde gern mal eure Meinung hören/lesen?
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Donnerstag 21. Januar 2021, 15:46
von __blackjack__
@DMD-OL: Was ist denn „unten links in Python“? Python hat kein oben, unten, links, oder rechts, das ist ein Konsolenprogramm, keine GUI-Anwendung. Also welche Software verwendest Du da, und was machst Du damit genau?
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Sonntag 24. Januar 2021, 02:54
von DMD-OL
Ach, PyCharm meinte ich.
Ich wollte doch einfach nur wissen, ob es möglich ist, die ausgabe von pyinstaller in ein tk.Text zu übertragen?
Könnte man das direkt im pyinstaller modul (das man ja runterladen kann) verändern oder ist das nicht ratsam?
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 25. Januar 2021, 09:19
von DeaD_EyE
Du könntest von deinem Programm aus den Pyinstaller mit Popen starten und stderr/stdout der PIPE zuweisen.
Dann warten bis der Prozess beendet ist und dann stdout und stderr lesen und die Daten in eine Variable übertragen (z.B. tkinter.StringVar).
Falls die Ausgabe gestreamt werden soll, wird es etwas komplizierter.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 25. Januar 2021, 15:58
von DMD-OL
Ich habs jetzt erstmal in einer Datei pyinstaller.py gespeichert.
Ich habe vor, daraus eine executable zu machen, die ich dann für alles verwenden kann.
Damit kann ich erst einmal aus allem eine exe machen, wenn ich die richtigen Pfade angebe.
pyinstaller.py:
Code: Alles auswählen
import os
import shutil
import winshell
import PyInstaller.__main__
from win32com.client import Dispatch
# MAIN SETTINGS
#
SOURCE_PATH = os.getcwd()
# BASE_PATH = os.environ['USERPROFILE']
TARGET_PATH = ['C:', 'Users', 'chris', 'Desktop', 'Hot Run']
#
####
GAME_NAME = TARGET_PATH[-1]
TARGET_GAME_RELEVANTS = ['images', 'sounds', GAME_NAME + '.exe', GAME_NAME + '.spec']
SOURCE_GAME_IRRELEVANTS = ['__pycache__', 'build']
TARGET, TARGET_CNT = str(), 0
for item in TARGET_PATH:
if TARGET_CNT == 0:
TARGET += item
TARGET_CNT += 1
else:
TARGET += '\\'+item
PATH_ICON = os.path.join(TARGET, 'images', 'icon', 'minion.ico')
for item in os.listdir(SOURCE_PATH):
source_path = os.path.join(os.getcwd(), item)
target_path = os.path.join(TARGET, item)
if os.path.isdir(source_path):
if not os.path.isdir(target_path):
shutil.copytree(source_path, target_path, symlinks=False, ignore=None)
else:
shutil.copy2(source_path, target_path)
PyInstaller.__main__.run([
'main.py',
'--onedir',
'--onefile',
'--windowed',
'--noconsole',
'--name=' + GAME_NAME,
'--icon=' + PATH_ICON,
'--distpath=' + TARGET,
'--specpath=' + TARGET
])
Jetzt bin ich dabei, ein eigenes Projekt zu machen mit tkinter layout, buttons für die festlegung der pfade, usw.
Habe in diesem Projekt auch ein kleines ausgabefenster.
In dieses neue Projekt baue ich zur Zeit auch die oben stehende pyinstaller.py datei ein.
Dort würde ich nun gern eine direkte live ausgabe von pyinstaller installieren.
Ist das auch möglich?
Ich hoffe, ich habe es einigermaßen verständlich verdeutlicht bekommen

Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 25. Januar 2021, 16:19
von Sirius3
Deine Konstanten sind keine Konstanten. Das ist sehr verwirrend.
SOURCE_PATH wird inkonsistent verwendet, weil Du an vielen Stellen doch os.getcwd benutzt, was an sich überflüssig ist, weil relative Pfade automatisch vom Arbeitsverzeichnis ausgehen.
Das ist wirklich die komplizierteste Art und weise, wie Du aus der Liste TARGET_PATH einen TARGET-Pfad zusammenbaust. Dafür gibt es doch os.path.join.
os.path ist aber veraltet und sollte durch pathlib.Path ersetzt werden:
Code: Alles auswählen
import shutil
import PyInstaller.__main__
from pathlib import Path
# MAIN SETTINGS
SOURCE_PATH = Path.cwd()
# BASE_PATH = os.environ['USERPROFILE']
TARGET_PATH = Path('C:/Users/chris/Desktop/Hot Run')
GAME_NAME = TARGET_PATH.name
TARGET_GAME_RELEVANTS = ['images', 'sounds', GAME_NAME + '.exe', GAME_NAME + '.spec']
SOURCE_GAME_IRRELEVANTS = ['__pycache__', 'build']
PATH_ICON = TARGET_PATH / 'images' / 'icon' / 'minion.ico'
def main():
for source_path in SOURCE_PATH.iterdir():
if source_path.name in SOURCE_GAME_IRRELEVANTS:
continue
target_path = TARGET_PATH / source_path.name
if source_path.isdir():
if not target_path.isdir():
shutil.copytree(source_path, target_path, symlinks=False, ignore=None)
else:
shutil.copy2(source_path, target_path)
PyInstaller.__main__.run([
'main.py',
'--onedir',
'--onefile',
'--windowed',
'--noconsole',
f'--name={GAME_NAME}',
f'--icon={PATH_ICON}',
f'--distpath={TARGET_PATH}',
f'--specpath={TARGET_PATH}',
])
if __name__ == "__main__":
main()
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Mittwoch 27. Januar 2021, 01:12
von DMD-OL
Danke an euch.
und @ DeaD_EyE: Ich werd mich jetzt erst einmal schlau machen und versuchen das hinzubekommen.
WErde mich aber wohl dann noch mal melden (müssen)...

Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Sonntag 31. Januar 2021, 17:46
von DMD-OL
Habe mich jetzt mit dem Starten von Pyinstaller via subprocess beschäftigt.
Später füge ich dann noch ein tk.Text für die ausgabe von pyinstaller hinzu.
Zunächst wollte ich erst einmal pyinstaller mit subprocess laufen lassen und die ausgabe an stderr/stdout zuweisen.
Bin aber neuling, bei der benutzung von subprocess.
In meinem Code:
Code: Alles auswählen
import os
import shutil
import subprocess
import PyInstaller.__main__
SRC_FILE_PATH = "C:/Users/chris/Documents/PyCharm/Hot Run/main.py"
SRC_SPLIT_PATH = SRC_FILE_PATH.split('/')
SRC_BASE_NAME = SRC_SPLIT_PATH.pop(-1)
SRC_PATH = '/'.join(SRC_SPLIT_PATH)
TRG_FOLDER_PATH = "C:/Users/chris/Desktop/HOT RUNNER"
TRG_SPLIT_PATH = TRG_FOLDER_PATH.split('/')
TRG_BASE_NAME = TRG_SPLIT_PATH.pop(-1)
TRG_PATH = '/'.join(TRG_SPLIT_PATH)
SRC_ICN_FILE = "C:/Users/chris/Documents/PyCharm/Hot Run/images/icon/minion.ico"
SRC_IMG_FOLDER = "C:/Users/chris/Documents/PyCharm/Hot Run/images"
SRC_SND_FOLDER = "C:/Users/chris/Documents/PyCharm/Hot Run/sounds"
def copy_additives(src_path, trg_path):
if os.path.isdir(src_path):
if not os.path.isdir(trg_path):
shutil.copytree(src_path, trg_path, symlinks=False, ignore=None)
else:
shutil.copy2(src_path, trg_path)
for item in os.listdir(SRC_PATH):
SOURCE_PATH = os.path.join(SRC_PATH, item).replace('\\', '/')
if SRC_IMG_FOLDER == SOURCE_PATH:
TRG_IMG_FOLDER = os.path.join(TRG_PATH, TRG_BASE_NAME, item).replace('\\', '/')
copy_additives(SRC_IMG_FOLDER, TRG_IMG_FOLDER)
elif SRC_SND_FOLDER == SOURCE_PATH:
TRG_SND_FOLDER = os.path.join(TRG_PATH, TRG_BASE_NAME, item).replace('\\', '/')
copy_additives(SRC_SND_FOLDER, TRG_SND_FOLDER)
os.chdir(SRC_PATH)
subprocess.call(
PyInstaller.__main__.run([
SRC_BASE_NAME,
'--onedir',
'--onefile',
'--windowed',
'--noconsole',
'--name=' + TRG_BASE_NAME,
'--icon=' + SRC_ICN_FILE,
'--distpath=' + TRG_FOLDER_PATH,
'--specpath=' + TRG_FOLDER_PATH
]))
erhalte ich die Ausnahme:
Code: Alles auswählen
[...]
7607 INFO: Building EXE from EXE-00.toc completed successfully.
Traceback (most recent call last):
File "C:\Users\chris\Documents\PyCharm\Create EXE-File\test.py", line 41, in <module>
subprocess.call(PyInstaller.__main__.run([
File "C:\Program Files\Python39\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Program Files\Python39\lib\subprocess.py", line 947, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\Python39\lib\subprocess.py", line 1356, in _execute_child
args = list2cmdline(args)
File "C:\Program Files\Python39\lib\subprocess.py", line 561, in list2cmdline
for arg in map(os.fsdecode, seq):
TypeError: 'NoneType' object is not iterable
Process finished with exit code 1
Ich weiß nicht genau, wodurch der Fehler verursacht wird.
@ DeaD_EyE: Pyinstaller mit Popen starten und stderr/stdout der PIPE zuweisen und ja so auch noch nicht umgesetzt.
Ohne subprocess, sondern nur mit
Code: Alles auswählen
PyInstaller.__main__.run([
SRC_BASE_NAME,
'--onedir',
'--onefile',
'--windowed',
'--noconsole',
'--name=' + TRG_BASE_NAME,
'--icon=' + SRC_ICN_FILE,
'--distpath=' + TRG_FOLDER_PATH,
'--specpath=' + TRG_FOLDER_PATH
])
läuft der Code einwandfrei.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Sonntag 31. Januar 2021, 18:11
von Sirius3
Konstanten werden komplett gross geschrieben, normaler Variablen dagegen komplett klein.
Das was Du da mit String-Operationen machst, macht man nicht, sondern nutzt pathlib.Path.
Aber das sag ich Dir ja jetzt schon zum Dritten mal, da scheint es eine Lernresistenz zu geben.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 00:49
von DMD-OL
ja. warum muß ich den pathlib.Path benutzen? was daran ist denn besser?
mir gefällt os.path sehr gut. pathlib.Path ist mir zu konfus zu benutzen, bei os.path ist die syntax sofort klar und einfacher.
hört sich ja sehr zwingend an von dir.
außerdem schreibe ich dir auch nicht zum ersten mal, daß das ein ausschnitt ist, den ich kurz vorbereite. ich möchte nicht
tagelang den mist vorbereiten, hier posten und dann keine nützliche hilfe bekommen.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 07:06
von Sirius3
Du benutzt nicht einmal os.path. uns wenn du keine nützliche Hilfe bekommst, liegt das vielleicht daran, dass sich niemand durch deinen kryptischen Code durcharbeiten will. Zudem findet du dir doch schon selbst die Antwort: subprocess.call weglassen.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 11:01
von DMD-OL
Wie subprocess.call weglassen?
Dann habe ich die pyinstaller-ausgabe doch wieder im pycharm-Fenster. Das möchte ich doch nicht.
Ich versuche mit subprocess eine anbindung zu pyinstaller (zum Output von pyinstaller) zu bekommen, damit ich die Ausgabe
des Pyinstaller-Moduls auslesen und in meinem eigenen fenster (tk.Text) ausgegen kann.
Im Grund das was -DeaD_EyE- schon oben beschrieben hat, versuche ich jetzt umzusetzen.
Habe im netz das hier gefunden erst mal:
Code: Alles auswählen
cmd = 'C:/Program Files/Python39/Scripts/pyinstaller.exe'.split('/')
# cmd ist der Pfad der PyInstaller.__main__-Datei (ohne split natürlich)
# args ist eine liste mit argumenten. Nur welche? args = cmd?
process = subprocess.Popen(args,
bufsize=0,
executable=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
preexec_fn=None, close_fds=False,
shell=True,
cwd=None, env=None,
universal_newlines=False,
startupinfo=None,
creationflags=0)
stdout, stderr = process.communicate()
und versuche nun das hier
Code: Alles auswählen
PyInstaller.__main__.run([
SRC_BASE_NAME,
'--onedir',
'--onefile',
'--windowed',
'--noconsole',
'--name=' + TRG_BASE_NAME,
'--icon=' + SRC_ICN_FILE,
'--distpath=' + TRG_FOLDER_PATH,
'--specpath=' + TRG_FOLDER_PATH
])
mit subprocess.Popen zu starten...
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 16:17
von DMD-OL
Habe mir jetzt einige Tutorials zu subprocess.Popen angeschaut.
Weiß aber leider noch immer nicht so richtig, wie ich den Pyinstaller mit subprocess "verpacken" soll.
Code: Alles auswählen
os.chdir('C:/Users/chris/Documents/PyCharm/Hot Run') # Diese Datei soll mit pyinstaller in eine .exe umgewandelt werden.
# Fehlerfreie funktionierendes kleines Spiel, das mit pyinstaller
# 'successful' umgewandelt wird. Nur das was pyinstaller dazu ausgibt,
# möchte ich gern in ein textfeld in tkinter schreiben lassen.
process = subprocess.Popen(['C:/Program Files/Python39/Scripts/pyinstaller.exe',
# SRC_BASE_NAME,
# '--onedir',
# '--onefile',
# '--windowed',
# '--noconsole',
# '--name=' + TRG_BASE_NAME,
# '--icon=' + SRC_ICN_FILE,
# '--distpath=' + TRG_FOLDER_PATH,
# '--specpath=' + TRG_FOLDER_PATH
],
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
stdout, stderr = process.communicate()
print(stdout, stderr) # Hier ist die Augabe von pyinstaller, die ich in ein tk.Text-Feld überführen möchte
process.kill()
Das gibt mir die Ausgabe:
Code: Alles auswählen
usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
[--add-data <SRC;DEST or SRC:DEST>]
[--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
[--hidden-import MODULENAME]
[--additional-hooks-dir HOOKSPATH]
[--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
[--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]
[--noupx] [--upx-exclude FILE] [-c] [-w]
[-i <FILE.ico or FILE.exe,ID or FILE.icns or "NONE">]
[--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
[--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
[--win-no-prefer-redirects]
[--osx-bundle-identifier BUNDLE_IDENTIFIER]
[--runtime-tmpdir PATH] [--bootloader-ignore-signals]
[--distpath DIR] [--workpath WORKPATH] [-y]
[--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
scriptname [scriptname ...]
pyinstaller: error: the following arguments are required: scriptname
Process finished with exit code 0
Es fehlen ja jetzt noch die Argumente, die pyinstaller braucht (pyinstaller_args).
Wie übergibt man die denn jetzt an subprocess.Popen?
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 16:42
von __blackjack__
@DMD-OL: `os.chdir()` hat da nichts zu suchen. Wenn der externe Prozess ein anderes Arbeitsverzeichnis als der aktuell laufende haben soll, dann hat `Popen()` ein Argument dafür.
Das ``shell=True`` macht keinen Sinn. Warum muss zwischen Deinem Prozess und dem PyInstaller noch ein zusätzlicher Shell-Prozess laufen und einfach nur die Daten durchreichen?
Für den gezeigten Aufruf braucht man nicht auf `Popen()` und `communicate()` aufteilen, das kann man auch mit `subprocess.run()` machen.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 17:04
von DeaD_EyE
DMD-OL hat geschrieben: Montag 1. Februar 2021, 00:49
ja. warum muß ich den pathlib.Path benutzen? was daran ist denn besser?
mir gefällt os.path sehr gut. pathlib.Path ist mir zu konfus zu benutzen, bei os.path ist die syntax sofort klar und einfacher.
hört sich ja sehr zwingend an von dir.
Wenn man sein Programm unter Windows, Linux und Mac ohne Anpassungen Pfade verwenden möchte, ist es mit pathlib viel einfacher.
Code: Alles auswählen
from pathlib import Path
DESKTOP = Path.home() / "Desktop"
Unter Windows ist es dann: WindowsPath('C:/Users/Andre/Desktop')
Auf meinem Linux-Server mit anderem Nutzer: PosixPath('/home/public/Desktop')
Einen Mac habe ich leider nicht zu demonstrieren.
Das geht natürlich auch mit os.path, aber es ist umständlicher.
Code: Alles auswählen
import os
DESKTOP = os.path.join(os.path.expanduser("~"), "Desktop")
Wenn man tiefer in den Quellcode von pathlib eintaucht, sieht man, dass es nicht ganz so einfach ist den Pfad des Home-Verzeichnisses in Erfahrung zu bringen.
Linux:
Code: Alles auswählen
In [18]: pathlib.PosixPath._flavour.gethomedir??
Signature: pathlib.PosixPath._flavour.gethomedir(username)
Docstring: <no docstring>
Source:
def gethomedir(self, username):
if not username:
try:
return os.environ['HOME']
except KeyError:
import pwd
return pwd.getpwuid(os.getuid()).pw_dir
else:
import pwd
try:
return pwd.getpwnam(username).pw_dir
except KeyError:
raise RuntimeError("Can't determine home directory "
"for %r" % username)
File: ~/.pyenv/versions/3.9.1/lib/python3.9/pathlib.py
Type: method
Windows:
Code: Alles auswählen
Signature: pathlib.WindowsPath._flavour.gethomedir(username)
Docstring: <no docstring>
Source:
def gethomedir(self, username):
if 'USERPROFILE' in os.environ:
userhome = os.environ['USERPROFILE']
elif 'HOMEPATH' in os.environ:
try:
drv = os.environ['HOMEDRIVE']
except KeyError:
drv = ''
userhome = drv + os.environ['HOMEPATH']
else:
raise RuntimeError("Can't determine home directory")
if username:
# Try to guess user home directory. By default all users
# directories are located in the same place and are named by
# corresponding usernames. If current user home directory points
# to nonstandard place, this guess is likely wrong.
if os.environ['USERNAME'] != username:
drv, root, parts = self.parse_parts((userhome,))
if parts[-1] != os.environ['USERNAME']:
raise RuntimeError("Can't determine home directory "
"for %r" % username)
parts[-1] = username
if drv or root:
userhome = drv + root + self.join(parts[1:])
else:
userhome = self.join(parts)
return userhome
File: ~/.pyenv/versions/3.9.1/lib/python3.9/pathlib.py
Type: method
Aus 10 Meter Entfernung sieht man, dass es sehr unterschiedlich ist, das Home-Verzeichnis des Nutzers zu finden.
Auch die unterschiedlichen Implementierungen sind sehr deutlich zu erkennen.
PS: Pfade als Strings mit + zu verknüpfen ist ganz falsch. Da muss man dann immer an den Pfadseparator (/ oder \) denken.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 22:17
von DMD-OL
Vielen Dank.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 22:28
von DMD-OL
Vielen Dank.
@DMD-OL: `os.chdir()` hat da nichts zu suchen. Wenn der externe Prozess ein anderes Arbeitsverzeichnis als der aktuell laufende haben soll, dann hat `Popen()` ein Argument dafür.
@__blackjack__: os.chdir() habe ich da nicht wegen subprocess.Popen, sondern damit pyinstaller die build und dist folder im dem ordner erstellt, den ich auf den desktop kopiert habe.
sonst sind die beiden dateien im alten original ordner. ich wollte da einfach alles zusammen in einem ordner haben.
den rest versuche ich umzusetzen... danke
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Montag 1. Februar 2021, 23:31
von __blackjack__
@DMD-OL: Das ändert nichts daran das `os.chdir()` da nicht stehen sollte. Das ändert nicht nur das aktuelle Arbeitsverzeichnis von PyInstaller sondern auch von Deinem Programm. Wenn das externe Programm ein anderes Arbeitsverzeichnis haben soll, dann regelt man das über das entsprechende `Popen`-Argument. Dafür ist das ja da.
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Dienstag 2. Februar 2021, 00:37
von DMD-OL
verstehe ich ja. für subprocess ist das vollkommen unnötig. aber für pyinstaller doch nicht. dafür hab ich das da drin.
aber ich kanns auch rausnehmen. nur das programm, in dem ich nur den pyinstaller benutze läuft wunderbar.
ich kann mir einen source file wählen (also eine py-Datei aussuchen) und einen target verzeichnis auswählen und es
wird eine executable am zielort mit icon auf dem desktop erstellt. funktioniert wunderbar. brauche aber glaub ich
einen ansatz, wie ich jetzt den pyinstaller in subprocess starten kann, damit ich die ausgabe ins text-feld überführen kann.
sonst bekomm i das wohl eher nicht hin.

kann mir da jmd einen ansatz zeigen?
Re: Pyinstaller-Ausgabe komplett an ein tkinter-Textfeld schicken
Verfasst: Dienstag 2. Februar 2021, 06:55
von Sirius3
Da Du es nicht anders verstehst.
FALSCH:
Code: Alles auswählen
os.chdir('C:/Users/chris/Documents/PyCharm/Hot Run')
process = subprocess.Popen([...],
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
Richtig:
Code: Alles auswählen
process = subprocess.Popen([...],
cwd='C:/Users/chris/Documents/PyCharm/Hot Run',
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)