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

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

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

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

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

Python

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

Q&A

解決済

1回答

4227閲覧

インストールしたはずのパッケージにImportError :No module namedがでる.

WK_ZAKK

総合スコア20

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

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

Python

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

0グッド

0クリップ

投稿2019/03/27 08:16

前提・実現したいこと

Rasberry pi3 B+ を用いてセンサー値を読み取り, csvファイルに書き込んだものをPythonのグラフ化ツールであるBokehを使ってグラフ化するためにひとまずラズパイで使えるかテストしてみようとしたときにエラーが表示されました.

pip3 listで確認すると確かにbokehはインストールされておりversionも確認できています.(ver:1.0.4)
pip3 show bokehでlocationを確認した結果/usr/local/lib/python3.6/site-packagesと表示されたのでsysを使ってフルパスでappendしておきました.

Raspberry piのpython shellはpython3.5.3(/usr/bin/python)で起動しているようなのですがこちらも関係しているのでしょうか.

ちなみにこのプログラムファイル自体は(/home/pi/bokeh_test.py)として保存しています.
ディレクトリについて学習と認識が甘くどこを直せばよいかわからない状況です.

No module named bokehってコマンドでpip listみたらbokeh入ってるじゃん!という具合に困っています.

ご教授お願い致します.

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

Traceback (most recent call last): File "/home/pi/bokeh_test.py", line 3, in<module> from bokeh.plotting import figure, output_file, show File "/usr/lib/python3/dist-packages/thonny/backend.py", line305, in _custom_import module = self._original_import(*args, **kw) Importerror: No module named 'bokeh'

該当のソースコード

official siteのチュートリアルにsysを加えたプログラムです.
Bokeh Official_site

Python3

1import sys 2from bokeh.plotting import figure, output_file, show 3 4 5sys.path.append('usr/local/lib/python3.6/site-packages/') 6 7x = [1, 2, 3, 4, 5] 8y = [6, 7, 2, 4, 5] 9 10output_file("/home/pi/lines.html") 11 12p = figure(title="simple line examples", x_axis_label='時間', y_axis_label='気温') 13 14p.line(x, y, legend="Temp", line_width=2) 15 16show(p)

試したこと

sudo apt install libatlas-base-devでライブラリ?を追加したこと.
pip showでlocationを確認しsys.path.appendでパスを通したこと.

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

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

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

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

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

guest

回答1

1

ベストアンサー

標準pythonの3.5系に紐付いたpipではなく、自分で入れたpython3.6系のpipがpip3コマンドで見えているみたいな状況でしょうか。

とりあえず、今のコードの二行目以降に

python

1print(sys.prefix) 2print(sys.path)

とでも挿入して、実行しているpythonを確定してみてください。


Raspberry piのpython shellはpython3.5.3(/usr/bin/python)で起動しているようなのですがこちらも関係しているのでしょうか

pyhtonコマンドで実行したいのなら、python -m pip install bokehを試す(python3コマンドかもしれないし、いろいろあると思うので環境にあった方法で行ってください)。その際pipがあるかどうかわからないので、なければ先にaptとかから入れてください。

あるいは、python3.6に入っているならスクリプトをpython3.6コマンドで実行するのも手です。


python

1sys.path.append('usr/local/lib/python3.6/site-packages/')

これはいろいろ厄介な事態を招くので、やめたほうが良いです。標準のインポートパスと違うものをappendしても、正常に動作する保証はまったくありません。

投稿2019/03/27 08:24

hayataka2049

総合スコア30931

WK_ZAKK👍を押しています

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

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

WK_ZAKK

2019/03/27 09:08 編集

回答ありがとうございます. ひとまず2行のsysプログラムを試させていただきました.それぞれの結果を書き出します. print(sys.prefix) /usr print(sys.path) ['/home/pi', 'usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-arm-linux-gnueabihf', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', 'usr/lib/python3/dist-packages', '/usr/lib/python3.5/dist-packages'] と表示されました. お恥ずかしながら初学者すぎてここから何がわかるのかがわかりません.申し訳ないです. とりあえずPython2系で動いているわけではないんだなということだけはわかりました. ただいまpython -m pip install bokehをターミナルで動かしているところです.
hayataka2049

2019/03/27 09:09 編集

システムデフォルトのpython3.5ですね。アバウトに言えばsys.prefixはpythonのインストールされている場所、sys.pathはインポートパス(import時にモジュールを探す場所)です。 これまでのプログラム実行は、 python スクリプト名 のように行っていましたか? であれば、python -m pip install bokehでいけます。 python3 スクリプト名 とかであればpython3 -m ~とかにしてください。
WK_ZAKK

2019/03/27 09:11

python スクリプト名で行っていました!
WK_ZAKK

2019/03/27 10:00

Exception: Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 353, in run wb.build(autobuilding=True) File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 749, in build self.requirement_set.prepare_files(self.finder) File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 380, in prepare_files ignore_dependencies=self.ignore_dependencies)) File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 554, in _prepare_file require_hashes File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 278, in populate_link self.link = finder.find_requirement(self, upgrade) File "/usr/lib/python2.7/dist-packages/pip/index.py", line 465, in find_requirement all_candidates = self.find_all_candidates(req.name) File "/usr/lib/python2.7/dist-packages/pip/index.py", line 423, in find_all_candidates for page in self._get_pages(url_locations, project_name): File "/usr/lib/python2.7/dist-packages/pip/index.py", line 568, in _get_pages page = self._get_page(location) File "/usr/lib/python2.7/dist-packages/pip/index.py", line 683, in _get_page return HTMLPage.get_page(link, session=self.session) File "/usr/lib/python2.7/dist-packages/pip/index.py", line 792, in get_page "Cache-Control": "max-age=600", File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 501, in get return self.request('GET', url, **kwargs) File "/usr/lib/python2.7/dist-packages/pip/download.py", line 386, in request return super(PipSession, self).request(method, url, *args, **kwargs) File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 488, in request resp = self.send(prep, **send_kwargs) File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 609, in send r = adapter.send(request, **kwargs) File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/adapter.py", line 47, in send resp = super(CacheControlAdapter, self).send(request, **kw) File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py", line 423, in send timeout=timeout File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 643, in urlopen _stacktrace=sys.exc_info()[2]) File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 315, in increment total -= 1 TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
WK_ZAKK

2019/03/27 10:02

回答おそくなり申し訳ありません.途中までうまくinstallしていたようですが,途中でこのようなエラーが表示されました.
hayataka2049

2019/03/27 10:03

なぜpython2が出てきたんだ・・・python -m pip --versionの結果を教えてください。
hayataka2049

2019/03/27 10:03

あと念の為which pythonの結果も。
WK_ZAKK

2019/03/27 10:14

本当に何度もありがとうございます. 結果を報告します.
WK_ZAKK

2019/03/27 10:14

pi@raspberrypi:~ $ python -m pip --version pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7) pi@raspberrypi:~ $ which python /usr/bin/python pi@raspberrypi:~ $ python -m pip show pip Name: pip Version: 9.0.1 Summary: The PyPA recommended tool for installing Python packages. Home-page: https://pip.pypa.io/ Author: The pip developers Author-email: python-virtualenv@groups.google.com License: MIT Location: /usr/lib/python2.7/dist-packages Requires:
hayataka2049

2019/03/27 10:17

python --version も追加でお願いします。
WK_ZAKK

2019/03/27 10:18

python --version Python2.7.13 です.
hayataka2049

2019/03/27 10:21

print(sys.prefix) print(sys.path) はそのpythonで試しましたか?
WK_ZAKK

2019/03/27 10:25

いえ、python3(IDLE)でやりました. 質問部分に記載されているコードに書き込んで他をコメントアウトして確かめました.
WK_ZAKK

2019/03/27 10:28

Terminalはpython2,IDLEは3という状況なのでしょうか?
hayataka2049

2019/03/27 10:32

みたいですね。 python3.5コマンドは通りますか? あったらpython3.5 ファイル名で同じスクリプトを実行して、結果がIDLEのときと揃うか確認してみてください。 揃っていたらpython3.5 -m pip ~でインストールを試してください。
WK_ZAKK

2019/03/27 10:39

なるほど、引っかかっていた理由がすこしわかってきた気がします。 python3.5でスクリプトを実行したところShellと同じ結果が得られました. ただいまpython3.5 -m pip install bokehを走らせています. まさかpythonのversionごとにパッケージをインストールしなければならないとは思いもしませんでした. 結果がでましたらまた報告させていただきます. しばしお待ちください.
hayataka2049

2019/03/27 10:45 編集

>まさかpythonのversionごとにパッケージをインストールしなければならないとは思いもしませんでした. 厳密にはpythonインタプリタごとに、です。同一バージョンで複数のpythonが入っているような環境もありえます。仮想環境を使って意図的にそうする場合もあります(環境ごとに入れるライブラリを変えて切り替えて使うなどする)。 なんにせよ、pythonのバージョンごとに構文とか仕様が少しずつ(2系と3系は大部分が、3系でも3.5と3.7ではけっこう相違点があったり)違うので、一緒くたに管理できない訳です。まあ、しょうがないですね。基本的には、それぞれのインタプリタに紐付いているpipを叩けば勝手に適切なものを入れてくれるので、慣れれば楽に扱える部類です。ちなみにsys.path.appendを推奨しないのも同様の理由です(python3からpython2専用のライブラリ読んだら確実に吹っ飛ぶよな・・・とか)。
WK_ZAKK

2019/03/27 10:49

なるほど、なるほど~~勉強になります! appendを推奨されないとおっしゃられたときにそうなのかなと考えていました. 参考書読むだけでは出てこないことばかりなのでコンピュータの構造は奥が深くておもしろいですね. hayataka2049さんに出会えたことだけでも私としてはかなりの収穫になりました.(表現に失礼な部分があるかもしれません...)
WK_ZAKK

2019/03/27 11:01

先ほどとは違うエラーが発生しました.
WK_ZAKK

2019/03/27 11:01

Exception: Traceback (most recent call last): File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 594, in urlopen chunked=chunked) File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 391, in _make_request six.raise_from(e, None) File "<string>", line 2, in raise_from File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 387, in _make_request httplib_response = conn.getresponse() File "/usr/lib/python3.5/http/client.py", line 1198, in getresponse response.begin() File "/usr/lib/python3.5/http/client.py", line 297, in begin version, status, reason = self._read_status() File "/usr/lib/python3.5/http/client.py", line 266, in _read_status raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 353, in run wb.build(autobuilding=True) File "/usr/lib/python3/dist-packages/pip/wheel.py", line 749, in build self.requirement_set.prepare_files(self.finder) File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 380, in prepare_files ignore_dependencies=self.ignore_dependencies)) File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 554, in _prepare_file require_hashes File "/usr/lib/python3/dist-packages/pip/req/req_install.py", line 278, in populate_link self.link = finder.find_requirement(self, upgrade) File "/usr/lib/python3/dist-packages/pip/index.py", line 465, in find_requirement all_candidates = self.find_all_candidates(req.name) File "/usr/lib/python3/dist-packages/pip/index.py", line 423, in find_all_candidates for page in self._get_pages(url_locations, project_name): File "/usr/lib/python3/dist-packages/pip/index.py", line 568, in _get_pages page = self._get_page(location) File "/usr/lib/python3/dist-packages/pip/index.py", line 683, in _get_page return HTMLPage.get_page(link, session=self.session) File "/usr/lib/python3/dist-packages/pip/index.py", line 792, in get_page "Cache-Control": "max-age=600", File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 501, in get return self.request('GET', url, **kwargs) File "/usr/lib/python3/dist-packages/pip/download.py", line 386, in request return super(PipSession, self).request(method, url, *args, **kwargs) File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 488, in request resp = self.send(prep, **send_kwargs) File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 609, in send r = adapter.send(request, **kwargs) File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/adapter.py", line 47, in send resp = super(CacheControlAdapter, self).send(request, **kw) File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py", line 423, in send timeout=timeout File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 643, in urlopen _stacktrace=sys.exc_info()[2]) File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 315, in increment total -= 1 TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
hayataka2049

2019/03/27 11:09

http.client.RemoteDisconnected: Remote end closed connection without response 途中でネットワークが切れているような気がします。なにか不安定なネットワークだったりしませんか? https://qiita.com/hidakanoko/items/5292ca79e3ff53867e40 成功するまでリトライしろと書いてある場所もある・・・
hayataka2049

2019/03/27 11:11 編集

完全に憶測ですが、先に python3.5 -m pip show pip して、Version: 9.0.1とか古めだったら python3.5 -m pip install -U pip とかで更新してから作業するとエラーハンドリングが改善されていてきもちやりやすいかもしれません。最新は19.0.3とかになるんですかね。
WK_ZAKK

2019/03/27 11:13

大学の研究室で開発をしているのですが、大学公式のネットワークには規制がかかっているため、個人のポケットwifiを経由してinstallしています.おそらくそれが限界に来たのだと思われます. すこし整理させていただきたいのですが, print(sys.path)でshellがどこのモジュールを参照しているのか表示しているということでしょうか?
WK_ZAKK

2019/03/27 11:13

早速ためしてみます.
hayataka2049

2019/03/27 11:15

>print(sys.path)でshellがどこのモジュールを参照しているのか表示しているということでしょうか? shellが、というかpythonインタプリタのモジュールimportの際に参照されるパスですね。いわゆるシェルのPATHとはまったく別物になるので混同しないようにしてください。
WK_ZAKK

2019/03/27 11:27

では、先に挙げたpath先ににbokehパッケージが入っているとimporterrorは解消されるということですか?
hayataka2049

2019/03/27 11:30

そうなりますね。だからってpython3.6のインストールディレクトリからコピペして動かそうとかは考えない方がいいですが・・・(依存ライブラリもあればバージョンの相違もあり、インストール時のsetupによってはいろいろと特殊な操作を行っている可能性もある)
WK_ZAKK

2019/03/27 11:33

pipの更新を行った後, python3.5 -m pip install bokehを実行したところ Could not install packages due to an EnviromentError:[Error 13] 許可がありません: '/usr/local/lib/python3.5/dist-packages/tornado-6.0.2dist-info' Consider using the '--user' option or cheak the permissions とエラーがでました.
WK_ZAKK

2019/03/27 11:34

忠告ありがとうございます.まさにそうするところでした.
hayataka2049

2019/03/27 11:35

システムデフォルトのpythonなので管理者権限が要るみたいですね。 which python3.5 と sudo which python3.5 を試して、同じ結果が出れば sudo python3.5 -m pip install bokeh として構いません。
WK_ZAKK

2019/03/27 12:10

ありがとうございます.一応エラーはなくなりプログラムは動作しました. しかしながらグラフは表示されませんでした. ここからまた勉強を再開したいと思います. お付き合いいただきありがとうございました!本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

同じタグがついた質問を見る

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

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

Python

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