1

我正在尝试一个关于 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'

是什么导致了这种不一致?import serial无论shell还是脚本都应该很容易吧?

4

2 回答 2

2

我找到了!

这个问题实际上很微妙但很简单。

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

所以文件名是serial.py。该模块称为serial,因此它产生了冲突。

我更改了脚本的文件名,它起作用了。

于 2013-10-14T20:18:06.073 回答
1

shell 和您的脚本之间的区别可能是不同的路径设置。比较路径,看看脚本与外壳是否有任何不同

import ser
print ser.__file__

import sys
print sys.executable
于 2013-10-12T10:12:32.457 回答