/ / Pythonのシリアルは、シェルではなく、スクリプトで動作しますか? - Python、シェル、シリアルポート、arduino

Python Serialはシェルでは動作しますがスクリプトでは動作しませんか? - Python、シェル、シリアルポート、arduino

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