하얀설표 블로그




해결)OSError: Chromium downloadable not found at {url} No such object





( 수정됨)


에러 내용

OSError: Chromium downloadable not found at https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1181205/chrome-win.zip: Received
<?xml version='1.0' encoding='UTF-8'?>
  <Error>
    <Code>NoSuchKey</Code>
    <Message>The specified key does not exist.</Message>
    <Details>No such object: chromium-browser-snapshots/Win_x64/1181205/chrome-win.zip</Details>
  </Error>.

해결방법

pyppeteer에서 사용하는 값을 변경한다.

설명

문제는 pyppetter에서 존재하지 않는 버전의 크로미움을 다운로드하려고 시도하는 것이다.
문제되는 pyppetter의 코드는 chromium_downloader.py인데, githup에서 확인할 수 있다.

해당 코드를 보면 os.environ에서 PYPPETEER_CHROMIUM_REVISION 값을 가져와서 사용하는데, 해당 값이 설정되지 않았다면 __init__.py에 선언되어있는 __chromium_revision__ 값을 사용한다.
보통 os.envrion을 설정하지 않으므로, __chromium_revision__을 사용하게 된다.

2.0.0 버전을 기준으로 __chromium_revision__ 값은 "1181205"으로 설정되어있는데, 해당 버전을 사용한 다운로드 url을 방문해보면 파일 다운로드 진행되지 않고, 에러 페이지가 노출된다.
https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1181205/chrome-win.zip

현 시점에서 가장 최신 버전은 1300991이다. 해당 버전을 적용한 url을 방문하면 에러 페이지가 노출되지 않고 파일이 다운로드되는 것을 확인할 수 있다.
https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1300991/chrome-win.zip

크로미움 최신 버전은 최신 버전 크로미움 다운로드 사이트에서 확인할 수 있다.

에러가 발생하는 이유는 파일을 다운로드할 수 없는 url을 방문하고 있는 것이 문제이므로, 이를 수정해주면 된다.
가장 간단한 방법은 다음과 같이 os.environ에서 유효한 PYPPETEER_CHROMIUM_REVISION 값을 선언해주는 것이다.

import os
os.environ['PYPPETEER_CHROMIUM_REVISION'] = '1300991'
...
import pyppetter
...

당연한 말이지만, os.environ 설정은 pyppetter를 import 하기 전에 진행되어야 한다.

참고 링크


공감 : 0







white.seolpyo.com