sudo python3 สร้างข้อผิดพลาด แต่ python3 ไม่ทำ

Aug 16 2020

ฉันไม่เข้าใจว่าทำไม "sudo python3 temphumlogger2.py" ทำให้เกิดข้อผิดพลาดของโมดูลในขณะที่ "python3 temphumlogger2.py" ดำเนินการโดยไม่มีปัญหา เอาต์พุตด้านล่างและโค้ดด้านล่าง ฉันต้องการให้โค้ดทำงานโดยอัตโนมัติเมื่อเริ่มต้นและจำเป็นต้องใช้ sudo เพื่อดำเนินการดังกล่าว ฉันได้ลองติดตั้งแพ็คเกจต่างๆใหม่แล้ว แต่ไม่สามารถหาสาเหตุได้ว่าทำไม sudo จึงทำให้เกิดข้อผิดพลาดและไม่มี

pi@raspberrypi:~ $ sudo python3 temphumlogger2.py  
Traceback (most recent call last):  
  File "temphumlogger2.py", line 3, in <module>  
    import adafruit_dht
ModuleNotFoundError: No module named 'adafruit_dht'
pi@raspberrypi:~ $ python3 temphumlogger2.py  
waiting 15 mins  
Temp: 73.9 F / 23.3 C    Humidity: 48.0% 
import time
import board
import adafruit_dht
from datetime import datetime
 
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)
 
while True:
    try:
        # Print the values to the serial port
        temperature_c = dhtDevice.temperature
        temperature_f = temperature_c * (9 / 5) + 32
        humidity = dhtDevice.humidity
        with open('/home/pi/thdataupstairs.csv', mode='a') as file_:
            file_.write("{},{},{}".format(datetime.now(),temperature_c, humidity))
            file_.write("\n")
        print("waiting 15 mins")
        print(
            "Temp: {:.1f} F / {:.1f} C    Humidity: {}% ".format(
                temperature_f, temperature_c, humidity
            )
        )
        time.sleep(10)
 
    except RuntimeError as error:
        # Errors happen fairly often, DHT's are hard to read, just keep going
        print(error.args[0])
 
    time.sleep(2.5)

คำตอบ

1 mechoption Aug 16 2020 at 22:46

ฉันเคยsudo bashป้อนคำสั่งเป็น sudo และพบว่าpython3 temphumlogger2.pyมีข้อผิดพลาดเดียวกัน ภายในหน้าต่าง sudo bash นี้ฉันทำตามคำแนะนำ CircuitPython ที่นี่เพื่อติดตั้งโมดูลทั้งหมดอีกครั้ง หลังจากนั้น temphumlogger.py จะทำงานโดยมีและไม่มีsudoเมื่อฉันเข้าสู่ระบบด้วย pi

ตามความคิดเห็นฉันคิดว่าฉันติดตั้งสิ่งต่าง ๆ ในฐานะผู้ใช้แทน sudo