반응형
셀레니엄을 사용하는 파이썬 코드를 pyinstaller로 실행파일을 만들면 바로 실행이 안 됩니다.
이유는 파이썬코드에서 사용하는 크롬드라이버가 실행파일에 포함이 안 돼서 그렇습니다.
런타임 상태 확인
우선, pyinstaller로 만든 실행파일에서 파이썬 코드를 실행하는지 판단하는 코드를 포함해야 합니다.
import sys
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
print('running in a PyInstaller bundle')
else:
print('running in a normal Python process')
출처: https://pyinstaller.readthedocs.io/en/stable/runtime-information.html
실행파일을 실행하면 sys.frozen 속성을 설정하고, 실행파일의 경로를 sys._MEIPASS에 저장한다고 합니다.
그래서 이 값을 확인하는 코드를 삽입해야 합니다.
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver.exe")
browser = webdriver.Chrome(chromedriver_path)
else:
browser = webdriver.Chrome(ChromeDriverManager().install())
이렇게, 실행파일로 코드를 동작할 때 현재 폴더에 있는 chromedriver를 사용하도록 합니다.
chromedriver 포함
이번에는 크롬드라이버를 실행파일에 포함시켜 줍니다.
pyinstaller에 --add-binary 옵션으로 chromedriver가 설치된 폴더 경로를 지정하면 됩니다.
문법은 다음과 같습니다.
--add-binary <SRC;DEST or SRC:DEST>
이제 pyinstaller로 실행 파일을 만들고 동작확인을 하면 됩니다.
pyinstaller --onefile --add-binary "../webcrawling/chromedriver/chromedriver.exe;." main.py
반응형
'PYTHON' 카테고리의 다른 글
[pandas] 그래프에 한글 출력 안 될 때. (0) | 2022.01.21 |
---|---|
python으로 파일 다운 받기. (0) | 2022.01.05 |
네이버 검색광고 API로 연관키워드를 검색해보자. (1) | 2021.03.03 |
쇼핑카테고리 트렌드 데이터 쉽게 가져오기(2편) (3) | 2021.02.23 |
네이버 데이터랩 쇼핑인사이트 API (쇼핑카테고리 트렌드 데이터 쉽게 가져오기) (0) | 2021.02.21 |