【備忘録】Pythonのserialモジュールは似たようなものが2つある
はじめに
このくそ忙しい時期にRS-232Cのシリアル通信で実験機器のパラメータを早急に変える必要があった。
滅多に行わない処理で、常設のコードなんてものはないので、Pythonでパラメータを先に変えてしまおうと判断した。
問題
シリアル通信のモジュールをpip installし、いざ
import serial conn = serial.Serial("COM3", baudrate=9600) >>> AttributeError: module 'serial' has no attribute 'Serial'
serialにSerialがないと怒られる。
原因
Pythonのシリアル通信モジュールには2種類ある
・pySerial
・serial
このうち、pyserialには「Serial」があり、serialにはないらしい。
両方ともimport serialでモジュールをインポートするので、「Serial」が呼ばれない。
対策
pip uninstall serial pip uninstall pyserial pip install pyserial
一度全部消してからpyserialのほうをインストールすればよい
所感
少しだけ調べた限り、pyserialを使った記事のほうが多いのでpyserialのみを使用したほうが無難。
筆者のようなネット記事のサンプルコードのimport文だけを見て「pip install serial」をしてしまうPythonをちょっとかじった人がハマりそう。