2017-07-30 117 views
0

我有一个脚本,我试图在终端中运行,但它的一部分在IDLE中完美工作,并且在运行时没有任何解释在终端。我发现的大多数关于类似问题的帖子似乎来自使用Python 2的终端和使用Python 3的IDLE,但是我的脚本在IDLE中为Python 2和3编写了大多数脚本运行良好,但调用此函数会终止它。random.randint()将不会在终端中运行,但在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 

当我运行在IDLE这个代码,我得到了我所期望的:

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

然后,当我按下按钮

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

当我运行在终端这个代码,我得到:

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

然后当我按下按钮

Waiting... 
Trigger Detected! 

然后没事。它只是停止。 我从一个树莓派3.运行此我呼吁与

python /home/pi/modules/useButtons.py 

脚本一个有趣的说明(我也想上,如果可能的输入),在怠速运转时,该脚本大约需要可用CPU功率的11%,但在终端中,占用25%(一个内核的全部)。为什么需要更多的权力?

回答

0

我发现了这个问题!尽管我的脚本没有相互冲突的名称,但我有一个不同的脚本(我已经忘记了一个脚本),它被命名为“random.py”。我的脚本试图在CLI中运行时导入,但IDLE导入了正确的脚本。确保从不使用脚本名称的内置模块名称,即使您不在当前脚本中使用该模块。它会在稍后造成问题!

相关问题