/ / Python Serial działa w powłoce, ale nie w skrypcie? - python, powłoka, port szeregowy, arduino

Python Serial działa w powłoce, ale nie w skrypcie? - python, shell, port szeregowy, arduino

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 № 1

ZNALAZŁ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