2015-12-23 3 views
1

Я новичок в cx_Freeze. Я начал использовать его в большом приложении python. Это приложение использует PySide и использует многопроцессорность. При запуске приложения и каждый раз, когда начинается поток, я вижу короткое мигающее окно (просто открывай и закройте очень быстро .. нет времени, чтобы что-либо прочитать). Теперь я попробовал очень простое приложение. Например:cx_Freeze мигает оконным окном даже с использованием Win32GUI

import os 
import sys 
import multiprocessing 

from PySide import QtGui 
from PySide import QtCore 
from PySide import QtNetwork 

if __name__ == '__main__': 
    # multiprocessing support 
    multiprocessing.freeze_support() 

    # init application 
    app = QtGui.QApplication.instance() 
    if not app: 
     app = QtGui.QApplication(sys.argv) 
    QtGui.QApplication.setQuitOnLastWindowClosed(False) 

    # check systemtray  
    if not QtGui.QSystemTrayIcon.isSystemTrayAvailable(): 
     QtGui.QMessageBox.critical(None, "Systray", "I couldn't detect any system tray on this system.") 
     sys.exit(1) # quick kill 
    wid = QtGui.QWidget() 
    wid.resize(250, 150) 
    wid.setWindowTitle('Simple') 
    wid.show() 

    sys.exit(app.exec_()) 

Но это все еще показывает и мигает окно при запуске. Вот файл настройки я использую с этим:

from cx_Freeze import setup, Executable 
# dependencies 
build_exe_options = { 
    "packages": [#"os", "sys", "glob", "re", "atexit", 
       "PySide.QtCore", "PySide.QtGui", "PySide.QtXml", 'PySide.QtXml', 
       'xml', 'P4', 'MYRefs_module', 'MYUtils_module', 'logging', 
       'multiprocessing'], 
    # "include_files": mfiles, # this isn't necessary after all 
    "excludes": ["Tkinter", "Tkconstants", "tcl"], 
    "build_exe": "build", 
    "icon": "img/icon.ico", 
    "include_msvcr":True 
} 

executable = [ 
    Executable("main.pyw", 
       base="Win32GUI", 
       initScript = None, 
       targetName="Example.exe", 
       targetDir="build", 
       copyDependentFiles=True, 
       ) 
] 

setup(
    name="Example", 
    version="0.1", 
    description="Example", # Using the word "test" makes the exe to invoke the UAC in win7. WTH? 
    author="Me", 
    options={"build_exe": build_exe_options}, 
    executables=executable, 
    requires=['PySide', 'cx_Freeze', 'P4', 'xml'] 
) 

Может быть, я делаю что-то не так? Проблема многопроцессорности? Любой намек оценили. Btw, я использую python 2.7.3x64 и cx_Freeze 4.3.4, PySide 1.2.2 ...

ответ

1

решена. И после нахождения проблемы, вопрос, вероятно, был неправильным. Я поймаю вызов os.system ('rd/s/q somefolder'). В одном из моих модулей загружен. Как только я удаляю это, что не нужно прямо сейчас, мигает консольное окно, не отображаемое снова. Я использовал его в одном месте, но вспышки появились в нескольких местах (потоках). Я также использовал Popen, который, по-видимому, отлично работает.

+0

Если вам нужно удалить каталог из Python, есть [shutil.rmtree] (https://docs.python.org/3/library/shutil.html#shutil.rmtree). –

Смежные вопросы