/ / Python Serial funciona en shell pero no en script? - Python, shell, puerto serie, arduino

Python Serial funciona en shell pero no en script? - Python, shell, puerto serie, arduino

Estoy probando un ejemplo en Arduino: http://playground.arduino.cc/Interfacing/Python

El ejemplo (que se ejecuta en Ubuntu) funciona muy bien en el shell:

import serial

ser = serial.Serial("/dev/ttyACM0", 9600)

while True:
print(ser.readline())

Sin embargo intentando ejecutar como un script:

Desktop / python_arduino /./ serial.py...

Que ejecuta esto:

#!/usr/bin/env python
import serial

ser = serial.Serial("/dev/ttyACM0", 9600)

while True:
print(ser.readline())

Y entiendo esto:

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"

¿Qué está causando esta inconsistencia? Debería ser fácil import serial independientemente de shell o script ¿verdad?

Respuestas

2 para la respuesta № 1

¡LO ENCONTRÉ!

El problema era en realidad sutil pero simple.

El nombre de archivo del script era el mismo nombre que la importación.

Así que el nombre del archivo era serial.py. El modulo se llama de serie, por lo que creó un conflicto.

Cambié el nombre del script, y funcionó.


1 para la respuesta № 2

La diferencia entre el shell y su script puede ser configuraciones de ruta diferentes. Compare las rutas y vea si algo difiere entre el script y el shell

import ser
print ser.__file__

import sys
print sys.executable