簡體   English   中英

Python腳本在IDLE中運行,但不在終端中運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM