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

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

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

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

Arduino

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

Q&A

解決済

3回答

13287閲覧

import serialがうまくいきません

hiiiro

総合スコア3

Python

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

Arduino

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

0グッド

0クリップ

投稿2021/08/15 06:51

初心者です。
Arduino・pythonを使って熱電対で温度を取得するプログラミングを作成、そのデータをエクセルデータ?に保存するプログラミングを組んでいます。

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

'
このようなエラーが出ています。pip install pyserialでインストールしているのですが、原因が分かりません。

エラーメッセージ File "C:\Users\sawad\python\thermocouple\thermocouple.py", line 5, in <module> import serial ModuleNotFoundError: No module named 'serial ### 該当のソースコード python ソースコード

import datetime
import csv
import time
import serial

ser = serial.Serial()
ser.baudrate = 9600
ser.timeout = 0.5
ser.port = "COM5"

today = datetime.datetime.today()

with open("thermocouple.csv",mode="a",encoding="utf-8")as f:
writer = csv.writer(f)
writer.writerows("時","分","秒","温度")

duration = int(input("計測時間を入力してください")) start = time.time() end = start + duration while time.time() <= end: writer.writerows(date.hour,date.minute,date.second,ser) time.sleep(0.5)

f.close()

試したこと

pip listで調べた結果、serialが入っていたので削除しました。

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

詳しい方よろしくお願いします。

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

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

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

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

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

jbpb0

2021/08/15 08:12 編集

> pip listで調べた結果、serialが入っていたので削除しました。 のときに「import serial」ができなくなったのかも 下記を実行して、強制的に上書きインストールしてみたら、どうなりますでしょうか? pip install --upgrade --no-deps --force-reinstall --no-cache-dir pyserial
hiiiro

2021/08/15 08:17

やってみましたが、結果変わらずでした。
jbpb0

2021/08/15 08:33 編集

c:\users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages に「serial」というディレクトリはありますか? もしあるなら、その中のファイルやディレクトリの構成は、下記と同じでしょうか? https://github.com/pyserial/pyserial/tree/master/serial また、それらのファイルやディレクトリの更新日時は、先ほど強制上書きインストールを行った時刻と合ってますでしょうか?
hiiiro

2021/08/15 08:50

すいません。調べ方がわからないです。
jbpb0

2021/08/15 09:07

Windowsのエクスプローラー https://image.itmedia.co.jp/pcuser/articles/1508/14/ky_QuickAccess-01.jpg を起動して、それで c:\users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages を開いてください そうしたら、そこにあるファイルやディレクトリの一覧が表示されますよね その中に「serial」というディレクトリはありますか? もしあれば、その「serial」を開いてください そうしたら、そこにあるファイルやディレクトリの一覧が表示されますよね それが、 https://github.com/pyserial/pyserial/tree/master/serial のファイルやディレクトリと一致してるか、足りないファイルやディレクトリが無いかを確認してください また、エクスプローラーの「表示」を「詳細」 https://www.fmworld.net/cs/azbyclub/qanavi/private/201904/2500000022/004.gif にしたら、「serial」の中にあるファイルやディレクトリの更新日時が表示されます その日時が、先ほど強制上書きインストールを行った時刻と合ってるか確認してください
hiiiro

2021/08/15 09:30

検索を掛けてみましたが見つかりませんでした。 sawadまではあるのですが、appdata以降見つかりません
hiiiro

2021/08/15 09:51

見つけました。更新日時も17:13になっていました。
jbpb0

2021/08/15 10:00

念のため、「serial」にある「__init__.py」の内容が、 https://github.com/pyserial/pyserial/blob/master/serial/__init__.py と同じか、確認してください 上記が大丈夫で、thkanaさんの回答の私の「2021/08/15 17:02」のコメントに書いた「sys.path」の確認も大丈夫なら、インポートできるはずなのですが (「sys.path」の確認もお願いします)
hiiiro

2021/08/15 10:09

確認しましたが、同じでした。 sys.pathをプログラミングに加えた結果、このようなものが出てきました。 ['C:\\Users\\sawad\\python\\thermocouple', 'C:\\Program Files\\Python39\\python39.zip', 'C:\\Program Files\\Python39\\DLLs', 'C:\\Program Files\\Python39\\lib', 'C:\\Program Files\\Python39', 'C:\\Users\\sawad\\AppData\\Roaming\\Python\\Python39\\site-packages', 'C:\\Program Files\\Python39\\lib\\site-packages'] Traceback (most recent call last): File "C:\Users\sawad\python\thermocouple\thermocouple.py", line 7, in <module> import serial ModuleNotFoundError: No module named 'serial'
jbpb0

2021/08/15 10:18 編集

お使いのパソコンには、二つのPythonが入ってます c:\users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39 にあるのはMicrosoft Store版のPythonで、pipで入れたのはそこに入ってます 一方、使っているPythonは C:\\Program Files\\Python39 にあるもので、そちらにはpipで入れたのは入ってないので、インポートできません 二つのPythonを入れるのは、今回のようなトラブルの原因になるので、可能ならば片方は削除して一つにする方がいいですよ 削除できないなら、Pathの設定を見直す等して、下記の状態にしてください ・使いたい方のPythonを使えるようにする ・使いたい方のPythonに紐づいてるpipを使えるようにする
hiiiro

2021/08/15 10:22

分かりました。ありがとうございます。
guest

回答3

0

pipでインストールしたPythonと、thermocouple.pyを動かしているPythonが違っている可能性があります。

thermocouple.pyを起動するとき、

$ python thermocouple.py

を実行しているなら、同じ環境で

$ python -m pip install pyserial

でインストールしてみてください。

別の方法で起動しているなら、起動方法を質問に追加してください。

投稿2021/08/15 07:07

ppaul

総合スコア24666

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

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

hiiiro

2021/08/15 07:31

回答ありがとうございます。 pyserialはpip install pyserialで既にインストール済みです。
jbpb0

2021/08/15 07:56

質問者さん > pip install pyserialで既にインストール済み だと、違うPythonの中にインストールされてるかもしれないので、今使ってるPythonの中に確実にインストールできるように、 > python -m pip install pyserial をやってみてくれ、という意味です
hiiiro

2021/08/15 08:01

python -m pip install pyserialをやりました。 C:\Users\sawad\python\thermocouple>python -m pip install pyserial Requirement already satisfied: pyserial in c:\users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (3.5) 結果変わらすでした。 C:\Users\sawad\python\thermocouple>thermocouple.py Traceback (most recent call last): File "C:\Users\sawad\python\thermocouple\thermocouple.py", line 5, in <module> import serial ModuleNotFoundError: No module named 'serial'
ppaul

2021/08/15 13:00

C:\Users\sawad\python\thermocouple>thermocouple.py ではなく C:\Users\sawad\python\thermocouple>python thermocouple.py で実行してください。
guest

0

ベストアンサー

pythonで

python

1import serial

がうまくいかない状態で、下記のpythonコードを実行してみてください

python

1import sys 2import pprint 3pprint.pprint(sys.path)

そうすると、たくさんパスが表示されますが、その中に

c:\users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages

が入ってるか確認してください
入ってないとimportできません

入ってない場合は、おそらく「pyserial」をインストールしたときのpipに紐付いてるPythonと、コード実行に使ってるPythonが別のものです
その場合は、使いたいPythonに紐付いてるpipを使ってインストールする必要があります
Path等の設定を見直してください

投稿2021/08/16 07:11

編集2021/08/16 07:13
jbpb0

総合スコア7651

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

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

0

ありがちなのは、pipでモジュールを追加したpythonとスクリプトを実行しているpythonが別のものだった、なんていうパターンですが。

pip listで調べた結果、serialが入っていたので削除しました。

pyserialは入っていたのですか?

pipはどのように調べて、質問のスクリプトはどのように実行したのですか?

投稿2021/08/15 07:11

thkana

総合スコア7629

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

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

hiiiro

2021/08/15 07:28

回答ありがとうございます。 pyserialは入っています。スクリプトはcmdで実行しています。 pythonのファイルは\Users\sawad\python\thermocouple\thermocouple.py pipはpip show pyserialで調べて結果 \users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages と出てきました。 こんな回答であっているでしょうか?よろしくお願いします。
nobonobo

2021/08/15 07:49

`python -m pip list`の表示結果に`pyserial 3.5`がありますか?
hiiiro

2021/08/15 07:58

C:\Users\sawad\python\thermocouple>pip list Package Version -------------- --------- certifi 2020.12.5 chardet 4.0.0 DateTime 4.3 et-xmlfile 1.1.0 future 0.18.2 idna 2.10 iso8601 0.1.16 openpyxl 3.0.7 pathlib 1.0.1 pip 21.0.1 pyserial 3.5 pytz 2021.1 PyYAML 5.4.1 urllib3 1.26.3 zope.interface 5.4.0 このように出てきました
jbpb0

2021/08/15 08:02

質問者さん pythonで import serial がうまくいかない状態で、下記のpythonコードを実行してみてください import sys import pprint pprint.pprint(sys.path) そうすると、たくさんパスが表示されますが、その中に \users\sawad\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages が入ってますでしょうか? 入ってないとimportできません
thkana

2021/08/15 08:04

pipコマンドを使うと、pip.exeとしてコマンドにまとめられたものが起動してイロイロとあるので、 pip list ではなく、 python -m pip list としてpythonの中からpipを起動してみたらどうなる? という話です。
hiiiro

2021/08/15 08:05

すいません。やってみました。 C:\Users\sawad\python\thermocouple>python -m pip list Package Version -------------- --------- certifi 2020.12.5 chardet 4.0.0 DateTime 4.3 et-xmlfile 1.1.0 future 0.18.2 idna 2.10 iso8601 0.1.16 openpyxl 3.0.7 pathlib 1.0.1 pip 21.0.1 pyserial 3.5 pytz 2021.1 PyYAML 5.4.1 urllib3 1.26.3 zope.interface 5.4.0
jbpb0

2021/08/15 09:12

私が「2021/08/15 17:02」のコメントに書いた、「sys.path」の確認をお願いできませんでしょうか?
thkana

2021/08/15 09:34

jbpb0さん なんでしたらご自分で回答書いてそこでやりとりしてはいかがでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問