2017-04-06 16 views
1

Je voudrais lancer un programme python à partir d'un autre programme python et quitter le programme précédent.Python, lance un programme .py et termine le programme précédent

Voici ce que je l'ai fait:

if(self.start_button.pression==1): 
     os.system('python program_to_launch.py') 
     sys.exit() 

Le résultat est tout à fait évident, le lancement du programme le « program_to_launch.py ​​» et attendre jusqu'à ce qu'il fini de courir.

Le problème réside dans la boucle while, dans le programme qui vient d'être lancé. Il est fait pour durer indéfiniment.

Voici le problème; le programme précédent attend toujours la fin du nouveau programme, et il ne sera pas exécuté the` sys.exit()

je pourrais tuer le premier programme using`

NOTES:

Suite à la method provided by this answer , je ne peux pas importer le programme pour lancer parce que je veux mettre fin au premier programme

import program_to_launch 

Je pense donc que ce n'est pas une solution. Et la commande exec file()

execfile('program_to_launch.py')

comme suggéré dans la réponse liée, il fournit des problèmes d'importer plusieurs modules dans l'exécution de program_to_launch.py ​​

Répondre

0

Je pense que vous pouvez simplement lancer le programme dans une nouvelle fil ou processus:

from os import system 
from threading import Thread 
from sys import exit 

if self.start_button.pression == 1: 
    thread = Thread() 
    thread.run = lambda: system('python program_to_launch.py') 
    thread.start() 

    exit() 
+0

Malheureusement, le programme précédent restent ouverts et freezed, je l'ai utilisé la fonction 'print (« signet »)' voir où le programme arrive dans l'exécution, il arrive avant la sortie '() 'Fonction. Au moins quand je ferme le second programme, le premier programme le ferme aussi. – Ziru93

+0

Note: j'ai aussi essayé 'sys.exit()' – Ziru93

+0

Au lieu de os.system, essayez subprocess.Popen. Il devrait fonctionner même sans le threading – seenorth