NameError:未定义名称“ConnectionRefusedError”

Ygo*_*gro 0 python sockets sh

以下代码向我抛出异常并停止,即使预测到异常。代码通过 .sh 启动,它还会打印有关代码执行的日志信息。

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

# Imports
import socket
from threading import Thread
import struct
import RPi.GPIO as GPIO
import os
import sys
from time import sleep

# Main Loop

    while True:

    try:

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((TCP_IP, TCP_PORT))
        s.settimeout(5)

        while True:

            try:

                # Data Sent 
                MESSAGE = str(""+ gpws_test() +""+ gpws_inhi() +"\r\n")

                s.send(MESSAGE.encode(encoding='utf_8'))
                data = s.recv(BUFFER_SIZE)

                # If Recieved Data
                if data == b'': break

                # Translate Byte
                data = data.decode('utf-8')
                data = data.split(',')

                # Board Functions
                gpws_inhi()
                gpws_test()
                start_switch(data)
                power()

                # print ("received data:", data)
                sleep(0.3)

                except ConnectionAbortedError: break

        except (socket.timeout, ConnectionRefusedError, ConnectionResetError, OSError) as e:

            print ("No Connection - ", e)   
            sleep(1)

        s.close()

    else:

        GPIO.output(23, GPIO.LOW)
        GPIO.output(21, GPIO.HIGH)
Run Code Online (Sandbox Code Playgroud)

代码最初运行良好,但一段时间后,它崩溃并抛出以下错误:

except (socket.timeout, ConnectionRefusedError, ConnectionResetError, OSError) as e:
NameError: name 'ConnectionRefusedError' is not defined
Run Code Online (Sandbox Code Playgroud)

更新

通过 .sh 文件声明 python 脚本时,请记住指定 python 版本:

#!/bin/bash
python3 /home/user/Desktop/main.py &> /home/user/Desktop/startup.log
Run Code Online (Sandbox Code Playgroud)

就像在文件的开头一样:

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

Boa*_*les 5

ConnectionRefusedError是 Python 3 中的内置异常。Python 2 中没有相应的内置异常。这就是您收到not defined错误的原因:名称未定义。