Python Serial在shell中运行但不在脚本中运行?

时间:2013-10-12 09:29:19

标签: python shell serial-port arduino

我正在尝试一个关于Arduino的例子:http://playground.arduino.cc/Interfacing/Python

示例(在Ubuntu上运行)在shell中运行良好:

import serial

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

while True:
    print(ser.readline())

然而,尝试以脚本身份执行:

桌面/ python_arduino /./ serial.py ...

执行此操作:

#!/usr/bin/env python
import serial

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

while True:
    print(ser.readline())

我明白了:

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'

造成这种不一致的原因是什么?无论shell或脚本如何,import serial都应该很容易吗?

2 个答案:

答案 0 :(得分:2)

我发现了它!

问题实际上是微妙而简单的。

脚本文件名与导入名称相同。

因此文件名为 serial.py 。该模块名为 serial ,因此产生了冲突。

我更改了脚本的文件名,但它确实有效。

答案 1 :(得分:1)

shell和脚本之间的区别可能是不同的路径设置。比较路径并查看脚本与shell的不同之处

import ser
print ser.__file__

import sys
print sys.executable