From 18ea87a4e8342538d4360ae67de34c47b60cc362 Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sat, 8 Jun 2013 15:00:44 +0200 Subject: [PATCH] Fixed building py2exe with PySide --- buildPy2exe.py | 5 +++-- syncplay/utils.py | 32 ++++++++++++++++++++++++++++++++ syncplayClient.py | 3 +++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/buildPy2exe.py b/buildPy2exe.py index c0a31ea..6c5e179 100644 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -519,12 +519,13 @@ common_info = dict( info = dict( common_info, - console=[{"script":"syncplayClient.py", "icon_resources":[(1, "resources\\icon.ico")], 'dest_base': "Syncplay"}, 'syncplayServer.py'], + windows=[{"script":"syncplayClient.py", "icon_resources":[(1, "resources\\icon.ico")], 'dest_base': "Syncplay"}], + console=['syncplayServer.py'], options={'py2exe': { 'dist_dir': OUT_DIR, 'packages': 'PySide.QtUiTools', 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide', - 'excludes': 'venv, _ssl, doctest, pdb, unittest, win32clipboard, win32event, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process', + 'excludes': 'venv, _ssl, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process', 'dll_excludes': 'msvcr71.dll, MSVCP90.dll', 'optimize': 2, 'compressed': 1 diff --git a/syncplay/utils.py b/syncplay/utils.py index 2e1ee10..c578c28 100644 --- a/syncplay/utils.py +++ b/syncplay/utils.py @@ -91,3 +91,35 @@ def findWorkingDir(): def limitedPowerset(s, minLength): return itertools.chain.from_iterable(itertools.combinations(s, r) for r in xrange(len(s), minLength, -1)) + +def blackholeStdoutForFrozenWindow(): + if getattr(sys, 'frozen', '') == "windows_exe": + class Stderr(object): + softspace = 0 + _file = None + _error = None + def write(self, text, fname='.syncplay.log'): + if self._file is None and self._error is None: + if(os.name <> 'nt'): + path = os.path.join(os.getenv('HOME', '.'), fname) + else: + path = os.path.join(os.getenv('APPDATA', '.'), fname) + self._file = open(path, 'a') + #TODO: Handle errors. + if self._file is not None: + self._file.write(text) + self._file.flush() + def flush(self): + if self._file is not None: + self._file.flush() + sys.stderr = Stderr() + del Stderr + + class Blackhole(object): + softspace = 0 + def write(self, text): + pass + def flush(self): + pass + sys.stdout = Blackhole() + del Blackhole diff --git a/syncplayClient.py b/syncplayClient.py index a9b4a85..eceae65 100755 --- a/syncplayClient.py +++ b/syncplayClient.py @@ -1,5 +1,8 @@ #!/usr/bin/env python from syncplay.clientManager import SyncplayClientManager +from syncplay.utils import blackholeStdoutForFrozenWindow if(__name__ == '__main__'): + blackholeStdoutForFrozenWindow() SyncplayClientManager().run() + \ No newline at end of file