Arduinoで例を試してみます。 http://playground.arduino.cc/Interfacing/Python
この例(Ubuntu上で実行されている)はシェル内で非常にうまく機能します。
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
シェルやスクリプトに関係なく正しいですか?
回答:
回答№1は2見つけた!
問題は、実際には微妙ながらも単純なものでした。
スクリプトのファイル名はインポートと同じ名前でした。
ファイル名は serial.py。モジュールはと呼ばれます シリアルそれで、それは対立を引き起こしました。
スクリプトのファイル名を変更してもうまくいきました。
回答№2の場合は1
シェルとスクリプトの違いは、パス設定が異なることです。パスを比較して、スクリプトとシェルで違いがないか確認してください。
import ser
print ser.__file__
import sys
print sys.executable