2010-12-04 7 views
7

Estoy tratando de iniciar una aplicación wxPython que (he convertido a un exe con py2exe) de un proceso que se ejecuta en segundo plano.Llamar a un subproceso sin tener la consola del sistema abierta

El problema es que cuando la aplicación GUI se abre, lo mismo ocurre con una ventana de consola (c: \ windows \ system \ cmd.exe)

tuve un vistazo a this question donde Alex Martelli sugiere establecer el parámetro de creationflags de Popen a 0x08000000 pero esto no ha resuelto mi problema.

También me pregunto si hay una forma mejor de ejecutar un proceso en segundo plano, en el momento en que cambié la extensión del script a pyw y como no tiene una GUI, entonces no está visible. ..

Esta es la línea que llama al subproceso

subprocess.Popen(args="%s"%comPort,bufsize=0, 
        executable="myFrozen_WxpythonApp.exe", 
        creationflags=0x08000000, shell=False) 

guión py2exe

... 

options = {'py2exe': {'compressed': 3, 
          'optimize': 2, 
          'excludes': excludes, 
          'packages': packages, 
          'dll_excludes': dll_excludes, 
          'bundle_files': 1, 
          'dist_dir': 'dist', 
          'xref': False, 
          'skip_archive': False, 
          'ascii': False, 
          #'packages': packages, 
         'custom_boot_script': '', 
         } 
       } 

     setup(options=options, windows=["app.pyw"], zipfile=None, data_files=data_files) 

Actualización:

Como he explicado en mi respuesta a esta pregunta, el problema estaba en la llamada subprocess.Popen.

La primera cadena en el parámetro args debe ser el nombre del ejecutable, el nombre del ejecutable puede ser seguido por cualquier comando o información que deba pasarse al subproceso.

+0

Ponga una nueva línea o dos en su bloque de código. – robert

+0

No está relacionado con el subproceso y la ventana de la consola del script principal. Es la ventana de la consola 'WxpythonApp' que aparece (y aún debería aparecer cuando la iniciaste solo). – delnan

+0

@delnan: Ojalá fuera así de simple. El 'parámetro' de windows se configuró al convertir a un exe con 'py2exe' y la ventana de la consola no se abre si ejecuto la aplicación manualmente, es decir, hago doble clic en ella ... – volting

Respuesta

3

me di cuenta de lo que estaba haciendo mal después de leer la documentación de subprocess.Popen

La primera cadena en el parámetro args debe ser el nombre del ejecutable. No incluí el nombre del ejecutable porque pensé que se había solucionado con el parámetro executable.

+0

Ah, muy bien. Parece que has respondido tu propia pregunta. Te sugiero que actualices tu pregunta con la solución que encontraste. Por cierto, los documentos ** son ** definitivamente engañosos con respecto al parámetro 'args' cuando dicen que" ... se puede establecer explícitamente usando el argumento ejecutable ", lo que parece implicar que puede quedar fuera de' args' . – martineau

+0

+1 ¡porque la documentación es siempre el mejor lugar para comenzar! – jathanism

+0

Entonces, ¿qué puede hacer el ejecutable para? cuando configuro el nombre del ejecutable en ** args para **, y la ruta ejecutable en el ejecutable para. No funcionó. – Samuel

Cuestiones relacionadas