web-dev-qa-db-ja.com

Python AttributeError: 'module'オブジェクトには属性 'Serial'がありません

私はDebianを走らせている私のRaspberry PiでPython 2.6でシリアルポートにアクセスしようとしています。私のserial.pyという名前のスクリプトはpySerialをインポートしようとします。

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

何らかの理由で、このエラーでシリアル接続を確立することを拒否します。

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

私が対話型のPythonインタプリタに同じコードを入力しようとしても、まだうまくいきません。

奇妙なことに、それは数時間前に動作していました。

問題は何でしょうか。私はしばらくの間、pySerialの再インストール、私のコードの書き換え、シリアルポートの再チェックなどのためにしばらくこれを直そうとしました。

前もって感謝します!

102
hao_maike

クラスではなくモジュールをインポートしています。だから、あなたは書く必要があります:

from serial import Serial

serialモジュールを正しくインストールする必要があります:pip install pyserial

79
VGO

私がしたのと同じ間違いをした人々のためにこの解決策を加えています。

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

あなたのpythonファイル名が 'something.py'のときに 'something'をインポートすると問題が発生します。

161
sql

誤って 'pySerial'(Sudo python -m pip install serial)の代わりに 'serial'(Sudo python -m pip install pyserial)をインストールしたため、同じエラーが発生します。

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

102
Kevin

間違ったパッケージ名 'serial'をインストールしました。

  • Python 2.xの場合はpip uninstall serialを、python 3.xの場合はpip3 uninstall serialを実行します。
  • Python 2.xの場合はpip install pyserialを、python 3.xの場合はpip3 install pyserialを実行して、pyserialをインストールします。
14
FutureJJ

あなたが私のように無力なら、これを試してみてください。

ここで説明されている方法で "Serial"のすべてのサブモジュール(または問題のあるパッケージ)を一覧表示します。 pythonパッケージの一部であるすべてのモジュールの一覧を表示します

私の場合、問題は次々と解決しました。

...私にとってはバグのように見えます...

3
Nearoo

この問題はあなたのproyectがserial.pyという名前でインポートされたライブラリもserialという名前であることに由来しています、名前を変更し、それがすべてです。

2
davidleosam

はいこのトピックは少し古いですが、私はとにかくそれを必要とするかもしれない人のために私のために働いた解決策を共有したいと思いました

ALiが言ったように、端末から以下を使用してあなたのプログラムを見つけることを試みなさい:

 Sudo python3
 import serial

print(serial.__file__) - >コピー

CTRL+D #(to get out of python)

Sudo python3 - >貼り付け/__init__.py

__init__.pyを有効にするとあなたのプログラムには "ok from python3"を使うつもりです。私の問題は私のpython3プログラムがpython 2.7からシリアルを使っていたことでした

他の解決策:他のpythonバージョンを削除する

曹操

出典: https://raspberrypi.stackexchange.com/questions/74742/python-serial-serial-module-not-found-error/85930#859

Tryhard

1
Benjamin

このエラーは、依存関係が循環している場合にも発生する可能性があります。あなたの輸入をチェックして、あなたが少しのサイクルもないことを確認してください。

1