質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

1014閲覧

import serial が通りません(pyserialにはできているはずです)

kakakatokyoeki

総合スコア85

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2022/07/22 04:41

編集2022/07/22 04:41

前提

Arduinoからのデータをシリアル通信を用いてpythonで取得したいです。
後述しますが、悪いのは、プログラムではなく、自分のパソコン(Windows)の問題考えられます。(素人の勘ですが)
原因究明の参考にできる情報がどこにあるかがわかりませんでした。
なので、自分がわかる範囲の情報を載せます。もし、得意な方で、指摘、取得のアドバイス(コマンドプロンプトでのとあるコマンドの実行する等)ありましたら、お願いします。

実現したいこと

Aruduinoのシリアルモニタに表示されているデータをpythonで取り込んで表示する。

発生している問題・エラーメッセージ

最初のimport serialが通りません。
下記のようなエラーコードが出ます。

No module named 'serial'

該当のソースコード

python

1import serial 2 3ser = serial.Serial('/dev/tty.',9600,timeout=None) 4line = ser.readline() 5print(line) 6ser.close() 7

**

試したこと

serialという名のパッケージは二つほどあるらしく、一つはpyserial(今回の目的)、もう一つは普通のserial(今回は使わない)で、serialが入っていたらimport serialがうまくいかないという記事https://teratail.com/questions/65097
を読んだので、serialがインストールされているかを pip listで調べました。
ですが、入っていたのはpyserialだけでした。

補足情報(FW/ツールのバージョンなど)

後々ラズパイで使うことが目的なので、ラズパイで上のプログラムを動かしたところ、データがきちんと読み込まれました。よって、
おそらく自分のパソコンの問題(パッケージ?設定?)かと思います。
あくまで素人の勘ですので、実はプログラムが原因かもしれませんが、、、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/07/22 04:53

python -m pip list で、pyserial は出てくるでしょうか
kakakatokyoeki

2022/07/22 06:52

y_waiwai様 反応ありがとうございます。 先ほど確認したところ、確かに python -m pip listから pyserial 3.5 が見つかりました。
kakakatokyoeki

2022/07/22 07:18

RiaFeed様 反応ありがとうございます。 urlを拝見しましたが、いまいち理解できませんでした。確かに import sys import pprint print.pprint(sys.path) はうまくいかなかったのですが、(指示のような文字が出なかった)書かれている具体的な対策方法が理解できませんでした。 パッケージをダウンロードする場所を変えるとはどういうことでしょうか? あと、これまで、opencvなど、他のライブラリを入れた時と同じやり方で、pyserialも入れたのですが、何が違うのでしょうか。 ご教授ください
jbpb0

2022/07/22 11:24

まず、pythonで下記を実行して、使ってるpythonの絶対パスを調べてください import sys print(sys.executable) 上記の結果が「C:\aaa\bbb\python.exe」だったとして以下説明しますので、質問者さんの環境の実際のパスに置き換えてください コマンドプロンプトで下記を実行したら、「pyserial」はありますでしょうか? C:\aaa\bbb\python.exe -m pip list もしあるなら、 C:\aaa\bbb\python.exe -m pip show pyserial を実行して、いろいろ表示される中に「Location:」で始まる行がありますので、そこに書かれてるパスを記録してください 次に、pythonで下記を実行してください import sys import pprint pprint.pprint(sys.path) たくさんパスが表示されますが、その中に「C:\aaa\bbb\python.exe -m pip show pyserial」で記録したパスが入ってますでしょうか?
kakakatokyoeki

2022/07/22 11:34

コマンドプロンプトで下記を実行したら、「pyserial」はありますでしょうか? ⇒ WARNING: Package(s) not found: pyserial という警告文が出ます。 パソコンの中には確かにpyserialはあるけど、プログラムを実行しているところにはないということでしょうか。
jbpb0

2022/07/22 16:14 編集

> ⇒ WARNING: Package(s) not found: pyserial という警告文が出ます。 は、何を実行した時に出たのでしょうか? C:\aaa\bbb\python.exe -m pip list を実行しても、上記のようなメッセージは出ないはずです 【追記】 C:\aaa\bbb\python.exe -m pip show pyserial を実行するのは、 C:\aaa\bbb\python.exe -m pip list の実行結果に「pyserial」が含まれてる場合ですので、まずはそちらを確認してください
kakakatokyoeki

2022/07/22 22:20

C:\aaa\bbb\python.exe -m pip list の実行結果に「pyserial」が含まれてる場合ですので、まずはそちらを確認してください 以下返信 すみません。先にC:\aaa\bbb\python.exe -m pip listを実行するという指示を見落としていました。 C:\aaa\bbb\python.exe -m pip listの実行結果にpyserialは含まれていませんでした。
jbpb0

2022/07/22 23:36

それなら、 C:\aaa\bbb\python.exe -m pip install pyserial を実行してインストールすれば、インポートできると思います ただし、 https://github.com/espressif/esptool/issues/269 によると、 C:\aaa\bbb\python.exe -m pip list の実行結果に「serial」が含まれてる場合は、先に C:\aaa\bbb\python.exe -m pip uninstall serial を実行して削除しておく必要があるようです
kakakatokyoeki

2022/07/23 07:47

無事、import pyserialが通りました。 解決できました。
guest

回答2

0

自己解決

上記の質問への修正、追記依頼の欄の通り、解決することができました。
jbpb0さんのコメントが解決策となりました。
以下コメント


それなら、

C:\aaa\bbb\python.exe -m pip install pyserial

を実行してインストールすれば、インポートできると思います

ただし、
https://github.com/espressif/esptool/issues/269
によると、

C:\aaa\bbb\python.exe -m pip list

の実行結果に「serial」が含まれてる場合は、先に

C:\aaa\bbb\python.exe -m pip uninstall serial

を実行して削除しておく必要があるようです


解決にご協力いただいた皆様ありがとうございました。

投稿2022/07/25 08:47

kakakatokyoeki

総合スコア85

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コメント欄でやりとりされていますが、このような質問は、システムに複数のpythonがインストールされているのが原因であることが多いのです。
モジュールはそのpythonごとに管理されているので、一方でインストールされたものが他方では使えないという状況になっている可能性があります。
そうなっているかどうかを調べる為に、以下の手順を実施してみてください。

■ 以下のコマンドを、コマンドプロンプト等で実行し、出力の中にpysirialが含まれているかどうか確認する。
python -m pip list
-> これは含まれているとのことですね。

■ そのプロンプトで、対象のスクリプトがある場所まで移動し、以下のコマンドでスクリプトを実行する。
cd <スクリプトのある場所
python <スクリプト名> <必要な引数>

最初のコマンドでpysirialが含まれているのであれば、これで実行できるはずです。

投稿2022/07/22 09:31

TakaiY

総合スコア12747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問