cron の定期実行で pythonで作った selenium のコードを動かしてみたら、以下のようなエラーが出て処理が失敗してしまいました。
症状
Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Selenium/webdriver/common/service.py", line 76, in start stdin=PIPE) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__ restore_signals, start_new_session) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver': 'geckodriver' During handling of the above exception, another exception occurred:
"No such file or directory: 'geckodriver': 'geckodriver'"...
別に「geckodriver」がないわけではない。
$ which geckodriver /usr/local/bin/geckodriver
cron から実行すると「geckodriver」のパスが見つからないと思われる。
今回はパスを以下のように設定(「executable_path」追加)して対応する。
self.driver = webdriver.Firefox(
firefox_profile=fp,
firefox_options=options,
executable_path=r'/usr/local/bin/geckodriver'
)