Próbuję przykładu na Arduino: http://playground.arduino.cc/Interfacing/Python
Przykład (działający na Ubuntu) działa świetnie w powłoce:
import serial
ser = serial.Serial("/dev/ttyACM0", 9600)
while True:
print(ser.readline())
Jednak próba wykonania jako skrypt:
Desktop / python_arduino /./ serial.py...
Który wykonuje to:
#!/usr/bin/env python
import serial
ser = serial.Serial("/dev/ttyACM0", 9600)
while True:
print(ser.readline())
I rozumiem to:
Traceback (most recent call last):
File "Desktop/python_arduino/./serial.py", line 2, in <module>
import serial
File "/home/leo/Desktop/python_arduino/serial.py", line 4, in <module>
ser = serial.Serial("/dev/ttyACM0", 9600)
AttributeError: "module" object has no attribute "Serial"
Co powoduje tę niespójność? To powinno być łatwe import serial
niezależnie od powłoki czy skryptu?
Odpowiedzi:
2 dla odpowiedzi № 1ZNALAZŁEM TO!
Problem był w rzeczywistości subtelny, ale prosty.
Nazwa skryptu miała taką samą nazwę jak import.
Więc nazwa pliku była serial.py. Moduł jest wywoływany seryjny, więc spowodowało konflikt.
Zmieniłem nazwę pliku skryptu i zadziałało.
1 dla odpowiedzi nr 2
Różnica między powłoką a twoim skryptem może być inna. Porównaj ścieżki i zobacz, czy coś różni się dla skryptu od powłoki
import ser
print ser.__file__
import sys
print sys.executable