2017-07-30 9 views
0

J'ai un script que j'essaie de lancer dans Terminal, mais une partie de celui-ci fonctionne parfaitement dans IDLE, et tue le script sans explication lors de l'exécution dans Terminal. La plupart des messages que j'ai trouvés sur des problèmes similaires semblent être de Terminal utilisant Python 2 et IDLE utilisant Python 3, mais mon script fonctionne dans IDLE pour BOTH Python 2 et 3 La plupart du script fonctionne bien, mais l'appel de cette fonction le tue .random.randint() ne fonctionne pas dans Terminal mais fonctionne dans IDLE

import random 
import time 

def gen_rndNum(): 
    rndNum = random.randint(1,10) 
    print ("Your random number is:") 
    print (rndNum) 

while 1: 
    print ('Waiting...') 

    if some_condition: # I know some_condition is not defined. It is a placeholder for the actual trigger 
     print ("Trigger Detected!") 
     gen_rndNum() 
    else: 
     #do some more stuff 
    time.sleep(.25) #Don't use 100% of CPU 

Quand je lance ce code dans IDLE, je reçois ce que j'attendais:

Waiting... 
Waiting... 
Waiting... 
Waiting... 
Waiting... 
Waiting... 
Waiting... 

Puis, quand je presse le bouton

Waiting... 
Trigger Detected! 
Your random number is: 
2 

Quand je lance ce code dans le Terminal, Je reçois:

Waiting... 
Waiting... 
Waiting... 
Waiting... 
Waiting... 
Waiting... 
Waiting... 

Ensuite, quand j'appuie sur le bouton

Waiting... 
Trigger Detected! 

Et puis rien. Ça s'arrête juste. Je courais ce à partir d'un Raspberry Pi 3. J'appelle le script avec

python /home/pi/modules/useButtons.py 

Une note intéressante (que je voudrais également entrée sur, si possible) est que lorsqu'il est exécuté dans IDLE, ce script prend environ 11% de la puissance du processeur disponible, mais dans Terminal, il faut 25% (l'intégralité d'un noyau). Pourquoi prendrait-il plus de pouvoir?

Répondre

0

J'ai trouvé le problème! Bien que mon script n'ait pas de nom en conflit, j'avais un script différent (un que j'avais oublié depuis longtemps) qui s'appelait "random.py". Mon script essayait d'importer cela lorsqu'il était exécuté dans l'interface de ligne de commande, mais IDLE importait le bon. Assurez-vous de ne jamais utiliser le nom des modules intégrés pour les noms de scripts, même si vous n'utilisez pas ce module dans le script en cours. Cela causera des problèmes plus tard!