2012-07-09 76 views
77

Debianを実行しているRaspberry PiでPython 2.6のシリアルポートにアクセスしようとしています。私は対話的なPythonで同じコードを入力しようとするとPython AttributeError: 'module'オブジェクトに 'Serial'属性がありません

AttributeError: 'module' object has no attribute 'Serial' 

:それはこのエラーとのシリアル接続を確立することを拒否する何らかの理由で

import serial 
ser = serial.Serial('/dev/ttyAMA0', 9600) 
ser.write("hello world!") 

serial.pyという名前の私のスクリプトがpySerialをインポートしよう通訳はまだ動作しません。

奇妙なことに、それは数時間前にはたらきかかっていました。

何が問題なのですか?私はしばらくの間、pySerialをインストールし直し、コードを書き直し、シリアルポートをダブルチェックするなどの修正を試みました。

ありがとうございます!

+4

'シリアルインポートシリアルから試しましたか? – mVChr

+0

モジュールをアンインストールしたか、またはPythonのバージョンを変更しましたか? – inspectorG4dget

+1

トレースバックには...? –

答えて

64

モジュールではなく、クラスをインポートしています。したがって、あなたは次のように書かなければなりません: from serial import serial

+3

はうまくいった!ありがとう。 –

+3

モジュールのインポート中に同じ問題が何度か起こりました。なぜいくつかのケースでうまくいかないのは分かりません(例えば、[* serial * website](http://pyserial.sourceforge.net/shortintro.html)の例を見てください) – VGO

+9

私は試しました。うまくいかない。エラーは "ImportError:名前シリアルをインポートできません" –

128

私はこれと同じ間違いをした人にこのソリューションを追加します。

ほとんどの場合、プロジェクトファイル 'serial.py'の名前を変更し、存在する場合はserial.pycを削除すると、単純な 'import serial'を属性エラーなしで実行できます。

Pythonファイル名が「something.py」のときに「何か」をインポートすると問題が発生します。

+2

うん..私のテストファイルに "serial.py"という名前をつけて、インポートシリアルがそれ自身をインポートしていたので。 – PedroMorgan

+3

素晴らしい。あなたは私の問題を解決しました。ありがとうございました –

+2

うわー、それが来るのを見ていませんでした。 45分髪を引き出した。 – Ultratrunks

2

あなたは私のような無力されている場合は、これを試してみてください。

一覧ここに記載の方法に「シリアル」(またはをトラブルがあるものは何でもパッケージ)の全てのサブモジュール:私はList all the modules that are part of a python package

問題が次々に解決されました。

は...あなたは循環依存関係を持っている場合

1

このエラーも発生する可能性が...私にはバグのように見えます。あなたの輸入品をチェックし、サイクルがないことを確認してください。

1

この問題は、proyectの名前がserial.pyで、インポートされたライブラリの名前がシリアルでもありますので、名前を変更してください。

+0

それはまさに私の場合の問題でした。インポートライブラリと同じ名前を決して選択しないでください。 – JohnnyFromBF

38

「pySerial」(sudo python -m pip install pyserial)の代わりに誤って「シリアル」(sudo python -m pip install serial)をインストールしましたが、これは同じエラーにつながります。

前述の解決策がうまくいかなかった場合は、正しいライブラリをインストールしたかどうかを再確認してください。

+0

そして、両方をアンインストールして、pyserialを再インストールしてください。 – jcaron

関連する問題