2017-07-30 18 views
0

私はターミナルで実行しようとしているスクリプトを持っていますが、その一部はIDLEで完璧に動作し、ターミナルで。私が似たような問題について見つけた記事のほとんどは、Python 2とIDLEのPython 3を使った端末からのものですが、私のスクリプトは両方とも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! 

そして、何もしません。それはただ止まる。 は私が面白いサイドノート(私も、可能な場合、上の入力たいと思いますが)IDLEで実行した場合、このスクリプトを約を取ることである

python /home/pi/modules/useButtons.py 

でスクリプトを呼び出すラズベリーパイ3からこれを実行しています利用可能なCPUパワーの11%ですが、Terminalでは25%(1つのコア全体)が必要です。なぜそれはより多くの力を取るだろうか?

答えて

0

問題が見つかりました。スクリプトには矛盾する名前はありませんでしたが、私は "random.py"という名前の別のスクリプト(忘れてしまったスクリプト)を持っていました。私のスクリプトは、CLIで実行するとそのスクリプトをインポートしようとしましたが、IDLEは正しいスクリプトをインポートしました。現在のスクリプトでそのモジュールを使用していない場合でも、スクリプト名にBuilt-in Modluesの名前を使用しないでください。それは後で問題を引き起こすでしょう!

関連する問題