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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

8306閲覧

ラズパイ python のライブラリのpathが通っていない

tamap

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2021/09/16 13:57

前提・実現したいこと

ラズパイ python のライブラリを入れたのですが、うまくできず。
おそらくpathが通っていないようにみえたのですが
方法が分からず、どなたかお知恵をお借りできれば幸いです。

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

>>> import aiohttp Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'aiohttp'

pipでインストールしようとすると、下記入っているようです

pi@raspberrypi:~ $ pip3 install aiohttp Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: aiohttp in ./.local/lib/python3.7/site-packages (3.7.4.post0) Requirement already satisfied: yarl<2.0,>=1.0 in ./.local/lib/python3.7/site-packages (from aiohttp) (1.6.3) Requirement already satisfied: multidict<7.0,>=4.5 in ./.local/lib/python3.7/site-packages (from aiohttp) (5.1.0) Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4) Requirement already satisfied: async-timeout<4.0,>=3.0 in ./.local/lib/python3.7/site-packages (from aiohttp) (3.0.1) Requirement already satisfied: attrs>=17.3.0 in ./.local/lib/python3.7/site-packages (from aiohttp) (21.2.0) Requirement already satisfied: typing-extensions>=3.6.5 in ./.local/lib/python3.7/site-packages (from aiohttp) (3.10.0.2) Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6)

windowsだとpathを通すはやったことがあるのですが、ラズパイだと良く分からず。。
すみませんがどなたかお知恵をお借りできれば幸いです。

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

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

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

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

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

ppaul

2021/09/16 14:56

複数のPythonがインストールされている環境で、他のPythonにpipとかcondaでインストールされたライブラリ(モジュール)をsys.path.appendを使って読み込むと、不整合が発生することがあるので、sys.path.appendを使うのは他の方法ではできないときの最終手段だと考えてください。
tamap

2021/09/17 00:57

ありがとうございます。 今のところ、下記やってみたらうまくいったようです。 $ sudo python import sys sys.path.append("./.local/lib/python3.7/site-packages") 今回に限っては不整合は発生していないようです。 そこで、pythonファイルで毎回呼び出すのではなく、 環境変数として、pathを通したいと思いました。  ↓ export PYTHONPATH="./.local/lib/python3.7/site-packages:$PYTHONPATH"  しかし、この方法では、うまく行かなかったです。   ↓ $ sudo python Python 3.7.3 (default, Jul 25 2020, 13:03:44) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages'] >>> どのようにすればpathを通せるか分かりますでしょうか。
jbpb0

2021/09/17 03:47 編集

「pip install...」の時に「--user」を付けると、「~/.local」以下に入るようです https://pyteyon.hatenablog.com/entry/2019/05/24/003924 でも普通は、そこもPythonは見つけてくれるはずだと思うのですが (インストールに使ったpipが、コード実行するPythonに紐付いてる場合) ラズパイを再起動して、ログインし直してもインポートできないでしょうか? (「sys.path.append()」をやらなくても)
tamap

2021/09/17 03:59

出来ました! ありがとうございました。 $ sudo pip install --user aiohttp お手数ですが、上記1行を改めて回答に入れてもらえれば、ベストアンサーとさせていただきたいです。 よろしくお願いいたします。
jbpb0

2021/09/17 06:52 編集

あれ? これまでに「pip install...」で入ってた > Requirement already satisfied: aiohttp in ./.local/lib/python3.7/site-packages (3.7.4.post0) の「./.local/lib/python3.7/site-packages」と、 > sudo pip install --user aiohttp で入った場所(たぶん「~/.local/...」)は、違う場所なのですか? てっきり、これまでに入ってた場所(「./.local/lib/python3.7/site-packages」)が、「--user」を付けたら入る場所(「~/.local/...」)だと思ってたのですが
tamap

2021/09/17 07:15

なるほど、、少し難しいです、自分には。 しかし、こういうことでしょうか。 再度以下実行。  ↓ pi@raspberrypi:~$ sudo pip install --user aiohttp Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: aiohttp in /root/.local/lib/python3.7/site-packages (3.7.4.post0) Requirement already satisfied: yarl<2.0,>=1.0 in /root/.local/lib/python3.7/site-packages (from aiohttp) (1.6.3) Requirement already satisfied: multidict<7.0,>=4.5 in /root/.local/lib/python3.7/site-packages (from aiohttp) (5.1.0) Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4) Requirement already satisfied: attrs>=17.3.0 in /root/.local/lib/python3.7/site-packages (from aiohttp) (21.2.0) Requirement already satisfied: typing-extensions>=3.6.5 in /root/.local/lib/python3.7/site-packages (from aiohttp) (3.10.0.2) Requirement already satisfied: async-timeout<4.0,>=3.0 in /root/.local/lib/python3.7/site-packages (from aiohttp) (3.0.1) Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6) 上記の最初のところで、下記のようですね。 > Requirement already satisfied: aiohttp in /root/.local/lib/python3.7/site-packages (3.7.4.post0) root この辺の意味がわからないですが(T_T)
jbpb0

2021/09/17 11:04

あ、「sudo」と「--user」を両方付けたのですか 「--user」は「sudo」を付けないでインストールできるようにするためのものなので、普通はそれらを両方付けることはしません たぶん「sudo」を付けずに pip install --user aiohttp を実行したら、 /home/ユーザ名/.local/... に入ったと思います > root この辺の意味がわからない 「sudo」と「--user」を両方付けたからそこに入ったのではないですかね (やったことないので推測ですが)
tamap

2021/09/20 02:36

遅くなりました。 ありがとうございます。 すべてsudo を付けるもんだ、と思い込みつつ、たまに付け忘れていたり、とか、 そもそも自分の理解があいまいだったことが分かりました。 ありがとうございます。無事に解決しました。 しかし、いろいろ最初に戻って入れなおしたくなりました(-_-;)
tamap

2021/09/21 02:54

jbpb0さん ありがとうございましたm(__)m $ sudo pip install --user aiohttp お手数ですが、上記1行を、そのままコピペで良いので、「回答」に入れてもらえれば、ベストアンサーとさせていただきたいです。 よろしくお願いいたします。
guest

回答2

0

ベストアンサー

Requirement already satisfied: aiohttp in ./.local/lib/python3.7/site-packages (3.7.4.post0)

pipで入れた「aiohttp」は「./.local/lib/python3.7/site-packages」にあるので、OS同梱のPython以外のPythonを追加インストールした心当たりがなければ、

python

1import aiohttp

よりも前(上)に、そこの絶対パスを「sys.path.append()」で追加してみてください

参考
Python Tips:ライブラリ読み込み対象ディレクトリを追加したい

投稿2021/09/21 07:45

編集2021/09/21 07:50
jbpb0

総合スコア7653

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

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

tamap

2021/09/21 09:10

ありがとうございましたm(__)m メモ 環境変数に入れる場合は、下記 $ pip install --user aiohttp
guest

0

python

1>>> import aiohttp

でエラーが出たときの対話環境で、

python

1import sys 2print(sys.executable)

を実行してみてください。

その結果は、pipがインストールしている場所と整合していますか。
整合していないようなら、以下のようにしてaiohttpをインストールしてください。
print(sys.executable)の結果が/aaa/bbb/pythonだとすると、以下のコマンドです。

shell

1/aaa/bbb/python -m pip install aiohttp

投稿2021/09/16 14:51

ppaul

総合スコア24666

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

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

tamap

2021/09/17 00:25

早速やってみました。 import sys print(sys.executable)  ↓結果 /usr/bin/python  ↓上記より以下実行 /usr/bin/python -m pip install aiohttp  ↓結果 ``` pi@raspberrypi:~ $ /usr/bin/python -m pip install aiohttp Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: aiohttp in ./.local/lib/python3.7/site-packages (3.7.4.post0) Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4) Requirement already satisfied: async-timeout<4.0,>=3.0 in ./.local/lib/python3.7/site-packages (from aiohttp) (3.0.1) Requirement already satisfied: attrs>=17.3.0 in ./.local/lib/python3.7/site-packages (from aiohttp) (21.2.0) Requirement already satisfied: multidict<7.0,>=4.5 in ./.local/lib/python3.7/site-packages (from aiohttp) (5.1.0) Requirement already satisfied: yarl<2.0,>=1.0 in ./.local/lib/python3.7/site-packages (from aiohttp) (1.6.3) Requirement already satisfied: typing-extensions>=3.6.5 in ./.local/lib/python3.7/site-packages (from aiohttp) (3.10.0.2) Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6) ``` とでました。すでに入っているように見えました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問