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

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

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

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

Python 3.x

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Raspberry Pi

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

Python

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

Q&A

解決済

1回答

1913閲覧

Raspberry PiでUbuntuのプログラムが動かない

退会済みユーザー

退会済みユーザー

総合スコア0

Raspbian

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

Python 3.x

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Raspberry Pi

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

Python

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

0グッド

3クリップ

投稿2019/01/02 09:41

Ubuntuで書いた(動いた)プログラムをRaspberry Piで実行したところエラーになりました。
エラーメッセージでいろいろ検索してみるもなにも得られませんでした。
OSの互換性がダメみたいなのはわかるんですが何をしたらいいのかわかりません。
具体的な原因または解決策等、もしありまいしたらご教授願います。

ソースコード

Python

1from requests_html import HTMLSession 2 3url = 'https://osu.ppy.sh/users/8341091' 4 5session = HTMLSession() 6response = session.get(url) 7response.html.render() 8 9element = response.html.find('div.value-display__value', first = True) 10 11ranking = element.text 12print (ranking)

ターミナル

$ python3.6 getRank.py

エラーメッセージ

Traceback (most recent call last): File "getRank.py", line 7, in <module> response.html.render() File "/home/pi/.local/lib/python3.6/site-packages/requests_html.py", line 572, in render self.session.browser # Automatycally create a event loop and browser File "/home/pi/.local/lib/python3.6/site-packages/requests_html.py", line 680, in browser self._browser = self.loop.run_until_complete(pyppeteer.launch(headless=True, args=['--no-sandbox'])) File "/usr/local/lib/python3.6/asyncio/base_events.py", line 466, in run_until_complete return future.result() File "/usr/local/lib/python3.6/site-packages/pyppeteer/launcher.py", line 311, in launch return await Launcher(options, **kwargs).launch() File "/usr/local/lib/python3.6/site-packages/pyppeteer/launcher.py", line 169, in launch **options, File "/usr/local/lib/python3.6/subprocess.py", line 707, in __init__ restore_signals, start_new_session) File "/usr/local/lib/python3.6/subprocess.py", line 1326, in _execute_child raise child_exception_type(errno_num, err_msg) OSError: [Errno 8] Exec format error

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

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

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

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

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

guest

回答1

0

ベストアンサー

Tetlapotさん、

requests_htmlの中で使われている pyppeteerというモジュールで、初回使用時に、chromeの実行ファイルがダウンロードされますが、Intel 64bit版がダウンロードされてしまいます。
ラズパイで、それを実行しようとして、エラーがでてるようです。

... downloadURLs = { 'linux': f'{BASE_URL}/Linux_x64/{REVISION}/chrome-linux.zip', 'mac': f'{BASE_URL}/Mac/{REVISION}/chrome-mac.zip', 'win32': f'{BASE_URL}/Win/{REVISION}/chrome-win32.zip', 'win64': f'{BASE_URL}/Win_x64/{REVISION}/chrome-win32.zip', } ...

なので、requests_htmlのソースに、Raspbian付属のchromium(/usr/bin/chromium-browser)を使う変更をかけます。
pyppeteer.launch()を呼ぶところに、executablePath='/usr/bin/chromium-browser'というパラメータを追加します。

  • ↓をbashで実行する。
# ソース取得 git clone https://github.com/kennethreitz/requests-html cd requests-html # # 変更 sed -i -e "s@headless=True, args=self.__browser_args@headless=True, executablePath='/usr/bin/chromium-browser', args=self.__browser_args@" requests_html.py # # pipにてインストール pip install -e .

こちらの環境では、提示されたコードをそのまま実行すると、render()のところで、timeout(デフォルトで8秒)のエラーがでました。timeout=60.0を追加してみると、値が取得できました。

  • 実行例
(py36) pi@raspberrypi:~/py36 $ python Python 3.6.8 (default, Jan 2 2019, 12:41:15) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from requests_html import HTMLSession >>> >>> url = 'https://osu.ppy.sh/users/8341091' >>> >>> session = HTMLSession() >>> response = session.get(url) >>> response.html.render(timeout=60.0) >>> >>> element = response.html.find('div.value-display__value', first = True) >>> >>> ranking = element.text >>> print (ranking) 76,052 >>>
  • 環境

Raspberry Pi 3B
Raspbian: 2018-11-13-raspbian-stretch
Python: 3.6.8 (自前でビルド)

投稿2019/01/03 00:43

mt08

総合スコア1825

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

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

退会済みユーザー

退会済みユーザー

2019/01/04 20:34

BA遅れてすみません。 問題なく動かすことができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問