🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

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

Q&A

解決済

1回答

4568閲覧

jupyter labでChromedriverのPATHが通らない

nogish

総合スコア20

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

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

0グッド

0クリップ

投稿2021/02/21 11:08

編集2021/02/24 10:27

前提・実現したいこと

Jupyter labで、ストレイピングができるように、勉強をしています。
(参考動画:https://www.youtube.com/watch?v=LgZ8Li97yoM)

そこでchromedriverのPATHが通らず
webdriver.Chrome()
が実行できません。

*Macを使っています。

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

追記↓

5

1###⑤のエラーメッセージ### 2OSError Traceback (most recent call last) 3<ipython-input-10-89af866da0ea> in <module> 4 1 # Mac 5 2 #browser = webdriver.Chrome() 6----> 3 browser = webdriver.Chrome(executable_path='/workspace/chromedriver') 7 4 # Chromedriverが見つかるまでの待ち時間を設定 8 5 #browser.implicitly_wait(3) 9 10~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 11 71 service_args=service_args, 12 72 log_path=service_log_path) 13---> 73 self.service.start() 14 74 15 75 try: 16 17~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py in start(self) 18 74 stdout=self.log_file, 19 75 stderr=self.log_file, 20---> 76 stdin=PIPE) 21 77 except TypeError: 22 78 raise 23 24~/anaconda3/lib/python3.7/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text) 25 773 c2pread, c2pwrite, 26 774 errread, errwrite, 27--> 775 restore_signals, start_new_session) 28 776 except: 29 777 # Cleanup if the child failed starting. 30 31~/anaconda3/lib/python3.7/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session) 32 1520 if errno_num == errno.ENOENT: 33 1521 err_msg += ': ' + repr(err_filename) 34-> 1522 raise child_exception_type(errno_num, err_msg, err_filename) 35 1523 raise child_exception_type(err_msg) 36 1524 37 38OSError: [Errno 8] Exec format error: '/workspace/chromedriver'

3

1###③,④のエラーメッセージ### 2WebDriverException Traceback (most recent call last) 3<ipython-input-33-73642a135d06> in <module> 4 1 # Mac 5----> 2 browser = webdriver.Chrome() 6 3 # Chromedriverが見つかるまでの待ち時間を設定 7 8~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 9 71 service_args=service_args, 10 72 log_path=service_log_path) 11---> 73 self.service.start() 12 74 13 75 try: 14 15~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py in start(self) 16 96 count = 0 17 97 while True: 18---> 98 self.assert_process_still_running() 19 99 if self.is_connectable(): 20 100 break 21 22~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py in assert_process_still_running(self) 23 109 raise WebDriverException( 24 110 'Service %s unexpectedly exited. Status code was: %s' 25--> 111 % (self.path, return_code) 26 112 ) 27 113 28 29WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127

1

1###当初〜②のエラーメッセージ### 2FileNotFoundError Traceback (most recent call last) 3~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py in start(self) 4 75 stderr=self.log_file, 5---> 76 stdin=PIPE) 6 77 except TypeError: 7 8~/anaconda3/lib/python3.7/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text) 9 774 errread, errwrite, 10--> 775 restore_signals, start_new_session) 11 776 except: 12 13~/anaconda3/lib/python3.7/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session) 14 1521 err_msg += ': ' + repr(err_filename) 15-> 1522 raise child_exception_type(errno_num, err_msg, err_filename) 16 1523 raise child_exception_type(err_msg) 17 18FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver': 'chromedriver' 19 20During handling of the above exception, another exception occurred: 21 22WebDriverException Traceback (most recent call last) 23<ipython-input-50-73642a135d06> in <module> 24 1 # Mac 25----> 2 browser = webdriver.Chrome() 26 3 # Chromedriverが見つかるまでの待ち時間を設定 27 28~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 29 71 service_args=service_args, 30 72 log_path=service_log_path) 31---> 73 self.service.start() 32 74 33 75 try: 34 35~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py in start(self) 36 81 raise WebDriverException( 37 82 "'%s' executable needs to be in PATH. %s" % ( 38---> 83 os.path.basename(self.path), self.start_error_message) 39 84 ) 40 85 elif err.errno == errno.EACCES: 41 42WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

該当のソースコード

Python

1!pip install selenium 2!pip install beautifulsoup4 3 4from selenium import webdriver 5import chromedriver_binary # ←追加 6import time 7import pandas as pd 8 9browser = webdriver.Chrome()

↓以下、Dockerfileの内容です

Dockerfile

1FROM ubuntu:latest 2 3RUN apt-get update && apt-get install -y sudo wget vim curl gawk make gcc 4 5RUN wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh && \ 6 sh Anaconda3-2019.03-Linux-x86_64.sh -b && \ 7 rm -f Anaconda3-2019.03-Linux-x86_64.sh && \ 8 sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - && \ 9 sudo apt-get install -y nodejs 10 11ENV PATH $PATH:/root/anaconda3/bin 12 13RUN pip install --upgrade pip 14RUN pip install pandas_datareader 15RUN pip install mplfinance 16 17RUN wget --quiet http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O ta-lib-0.4.0-src.tar.gz && \ 18 tar xvf ta-lib-0.4.0-src.tar.gz && \ 19 cd ta-lib/ && \ 20 ./configure --prefix=/usr && \ 21 make && \ 22 sudo make install && \ 23 cd .. && \ 24 pip install TA-Lib && \ 25 rm -R ta-lib ta-lib-0.4.0-src.tar.gz 26 27RUN mkdir /workspace 28 29CMD ["jupyter-lab", "--ip=0.0.0.0","--port=8888" ,"--no-browser", "--allow-root", "--LabApp.token=''"]

試したこと

追記
executable_pathをマウントしたDocker側のディレクトリで、指定できていないようだったので、

  • 一度homebrewでchromedriverをアンインストールして、HPからダウンロードし直し、
  • デスクトップでマウントしたディレクトリに、chromedriverを移し、
  • executable='/workspace/chromedriver'と指定したところ、

結果:OSError: [Errno 8] Exec format error: '/workspace/chromedriver'
が返ってきました。

https://watlab-blog.com/2019/08/10/chromedriver-path/を参考に、
import chromedriver_binary
を追加してみましたが、③と同様に、エラーコード127が返ってきました、、

chromedriverが起動できていないからでは?と思い、
ターミナルで、chromedriverと入力

し、起動できたのですが、今度は、

結果
WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127
という新しいエラーメッセージが返ってきました、、

Dockerfileは関係ないか?と思い、一旦Dockerfileの追記は削除しました。
・chromedriverをreinstall直したり、
・chromeのアップデートとchromedriverをバージョンが合うものでインストールし直したり、
・chromedriverがひらけなかったので、macのシステム環境設定から開けるようにしたり、
色々試行→

結果:WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

Dockerを使ったコンテナで、これまでもJupyter Labで行ってきたため、Dockerfileにchromedriverのインストールなどができるように以下のサイトのものをコピペして追加ました。
https://gist.github.com/varyonic/dea40abcf3dd891d204ef235c6e8dd79
(初心者のため、Dockerfileの内容が理解できておらず、コピペしてしまいました。)

そこでDockerfileを更新するために、ターミナルでdocker-compose up --buildを実行すると、

結果:
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?

Supported filenames: docker-compose.yml, docker-compose.yaml

と返ってきて、Dockerfileの更新方法もわかりません。

補足

jupyter labでのマウント?設定はこのようになっています。
スクレイピング.ipynbファイルが問題のエラーコードが出ているファイルですが、自動化大全ディレクトリ内のものです。
jupyter labでのマウント?設定
Dockerとデスクトップのマウントは、
・デスクトップ:/User/user/Desktop/kinocode
・Docker:/workspace
となっているようです。
(初心者なので、認識間違っている可能性があればぜひご教示ください。)

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

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

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

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

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

meg_

2021/02/21 11:40 編集

Chromedriverはインストール済ですよね? 質問内容には関係ないかもしれませんが、使用されているのはjupyter labですか?Jupyter notebookですか?(文章に両方の記述があり?となりましたので)
nogish

2021/02/23 07:09

Chromedriverはインストール済のはずです。 一応、jupyter labで、!pip install chromedriverと入力したところ、 … Successfully installed chromedriver-2.24.1となりましたが、 問題のエラーメッセージは同様のままでした。 jupyter labとjupyter notebookの違いがわかっていませんでした!訂正します!(jupyter labのnotebookがjupyter notebookなのだと勘違いしていました…)
bsdfan

2021/02/23 09:34

Dockerfileとdocker-compose.ymlを載せた方がアドバイスがきやすいと思います。
nogish

2021/02/24 08:00

Dockerfile載せます!コンテナ1つなので、docker-composeは使っていないはずです!
m.ts10806

2021/02/24 08:37

回答依頼いただきましたが、今回の質問タグいずれもMyタグ登録しておりません。依頼前にタグのスコアは確認されたほうが良いと思います。
nogish

2021/02/24 08:55

そうなのですね、申し訳ありませんでした、、
guest

回答1

0

ベストアンサー

以下のようにexecutable_pathで指定しみてはいかがでしょうか。
driver = webdriver.Chrome(executable_path='/path/chromedriver')

投稿2021/02/23 11:54

ML_beginner

総合スコア21

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

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

nogish

2021/02/24 08:37 編集

もう一度インストールし直し、Linking Binary 'chromedriver' to '/usr/local/bin/chromedriver'とあったので、 browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver') と設定したのですが、合っていますでしょうか? 結果は同じエラーになりました、、↓ WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
ML_beginner

2021/02/24 08:40 編集

Dockerのマウントはご確認されたでしょうか。 具体的にいうと、localの場合/usr/local/bin/chromedriverがパスになりますが、Dockerfileの場合マウント先(docker runの際の-vオプション)の設定次第で、/workfile/bin/chomedriverのようにパスが異なります。 Dockerコンテナにubuntuを積んでいるいるようなので、ubuntuに入って(docker exec コンテナ名 bash等)パスを確認してみてはいかがでしょうか。 dockerの実行コマンドも記載したほうが回答が得やすいかと思います。
nogish

2021/02/24 10:00

>>Dockerコンテナにubuntuを積んでいるいるようなので、ubuntuに入って(docker exec コンテナ名 bash等)パスを確認してみてはいかがでしょうか。 ubuntuというものをよく理解しておらず、回答できず申し訳ありません、、 マウントについては、自分なりに考えて上記補足情報として修正しました。 デスクトップ上のkinocodeというファイルとマウントしたため、 一度chromedriverをhomebrewでアンインストールした上で、今度はHPからインストールし、マウントしたkinocodeファイルに移動しました。 そして、executable_path='/workspace/chromedriver' としたところ、 また新たなエラーメッセージが出ました。 OSError: [Errno 8] Exec format error: '/workspace/chromedriver'
ML_beginner

2021/02/24 10:27

こちらの方はいかがですか? https://ja.ojit.com/so/python/295055 Mac版をダウンロードしているのではないですか? DockerのOSはubuntuなのでlinux版をダウンロードする必要があります。
nogish

2021/02/24 10:38

mac版をダウンロードしていました、、!Dockerはlinuxなのですね、、 今度は、statuscode:127で予期せず終了するというようなエラーメッセージが出てきました。 デスクトップ上でも、linux版のchromedriverは起動しようとしたら、勝手に閉じてしまうのですが、 これもOSの問題なのでしょうか。であれば、ubuntu?の環境構築が必要ということでしょうか?
ML_beginner

2021/02/24 10:50 編集

jbpb0

2021/02/24 13:29 編集

> statuscode:127で予期せず終了 pythonからではなく、(docker内のlinux上で)chromedriverを単独で動かすと、原因分かるかもしれません おそらく、linux側に何か足りないものがあるので、chromedriverを単独で動かした時のエラーメッセージからそれを読み取って、(docker内の)linuxに追加インストールしてください 参考 https://qiita.com/taikomegane/items/58184ea359788ff32147 の「4.Status code 127を解決する」 質問者さんの環境で足りないものは、上記Webページに書かれてるものとは違うものかもしれないので、上記はあくまでも確認手段の参考にして、質問者さんの環境で出たエラーメッセージを読んで、足りないものを入れてください 【追記】 chromedriverを単独で動かしたり、その結果分かった足りないものを追加インストールしたりするのは、docker内のlinuxです Mac側ではありませんので、ご注意ください
nogish

2021/02/24 13:50

OSなどが難しく、今回は一旦システムを作ってみたいので、結局Dockerでやることは諦めて、mac内にインストールしていくことにしました。 ここまでご回答いただいた皆さんには申し訳ないです、、 でも、今回のことは非常に勉強になりました!ML_beginnerさんになんどもご回答いただけて、毎回そうなのか!と思うことばかりでした。結局諦めてしまいましたが、非常にためになったという意味も込めてベストアンサーにさせていただきます。 また、先ほどコメントくださったjbpb0さんのコメントも非常にタメになりそうなので覚えておきます。ありがとうございます!!
ML_beginner

2021/02/24 13:54

Dockerの学習は個人的にはudemyの講座がオススメです。 引き続き、頑張って下さい!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問