[英]Find out if a python script is running in IDLE or terminal/command prompt
[英]Python script running in IDLE but not in terminal
這里有很多此問題的實例,但是所有實例都在嘗試運行腳本時列出了錯誤。 當我嘗試從終端運行腳本時,它會花一秒鍾的時間,然后返回到正常的終端提示符(沒有錯誤消息)。
我是Python的新手,如果我只是做錯了事,但為了我的生命,請原諒我。 。 。 在IDLE中打開/運行時,這運行得很好。
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import RPi.GPIO as GPIO
RELAY_PIN_1 = 23
RELAY_PIN_2 = 24
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(RELAY_PIN_1, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(RELAY_PIN_2, GPIO.OUT, initial=GPIO.HIGH)
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("/amber/1/1")
client.subscribe("/amber/1/2")
def on_message(client, userdata, msg):
if msg.topic == "/amber/1/1":
if msg.payload == b'ON':
GPIO.output(RELAY_PIN_1, GPIO.LOW)
elif msg.payload == b'OFF':
GPIO.output(RELAY_PIN_1, GPIO.HIGH)
if msg.topic == "/amber/1/2":
if msg.payload == b'ON':
GPIO.output(RELAY_PIN_2, GPIO.LOW)
elif msg.payload == b'OFF':
GPIO.output(RELAY_PIN_2, GPIO.HIGH)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("10.0.0.163", 1883, 60)
client.loop_start()
萬一有人想知道,我一直在嘗試使用命令python mqtt.py
(其中mqtt.py
是文件名)來運行它。 另外,我在IDLE和終端中都使用Python2.7。
當您調用loop_start()
您將在另一個線程上啟動客戶端,但是此后腳本立即結束,進程終止,因此什么也沒有發生。
如果希望客戶端繼續運行,請在loop_start()
之后在主線程中使用sleep()
,或者調用loop_forever()
,它將在當前線程中循環,因此腳本不會終止。
請參閱文檔中的網絡環路部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.