我正在尝试一个关于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
都应该很容易吗?
答案 0 :(得分:2)
我发现了它!
问题实际上是微妙而简单的。
脚本文件名与导入名称相同。
因此文件名为 serial.py 。该模块名为 serial ,因此产生了冲突。
我更改了脚本的文件名,但它确实有效。
答案 1 :(得分:1)
shell和脚本之间的区别可能是不同的路径设置。比较路径并查看脚本与shell的不同之处
import ser
print ser.__file__
import sys
print sys.executable