안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
오늘은 제가 윈도우 환경에서 pyinstaller로 패키징한 exe파일의 용량을 줄이기 위해서 새로운 가상환경을 만들고, pywin32를 설치 및 사용하면서 겪었던 문제들을 정리해보려 합니다.
개인적으로 너무 고생을 해서 다른 분들은 이 글을 보시고 문제들을 쉽게 해결하시길 바랍니다.
1. powershell 권한 설정 문제
1) 문제 현상
VScode의 터미널창(windows의 경우 기본적으로 Powershell)을 켰을 때 발생하는 오류 메시지
+ CategoryInfo : 보안 오류: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
2) 해결 방법
구글링을 하다보면 VScode의 기본 터미널을 Powershell을 cmd로 바꾸라고 하는 경우가 많은데, 참고로 cmd보다 업그레이드 된 터미널이 Powershell이라고 합니다. (실제로 cmd로 터미널을 켜면 해당 오류는 출력되지 않음)
실제 사용할 때는 큰 차이는 못느꼈지만 저는 그냥 아래의 방법을 이용해서 powershell을 기본 터미널로 이용하기로 하였습니다.
a) 우선 윈도우(windows10 기준)화면 좌측하단의 검색창을 클릭해서 "powershell"을 입력 후, 그림에 표시된 Windows PowerShell을 우클릭하여, 관리자권한으로 실행시켜줍니다.
b) 다음 명령어들을 차례대로 입력하고 엔터를 눌러줍니다. 해당 과정은 허용되지 않은 스크립트를 사용하겠다고 설정해주는 과정입니다.
- Set-ExecutionPolicy Unrestricted
- Y
2. 가상환경 신규생성 후, win32com 설치 및 스크립트 실행 시 문제
1) 문제 현상
ImportError: DLL load failed while importing win32api: 지정된 프로시저를 찾을 수 없습니다.
2) 해결 방법
2021년 12월 16일 기준, pywin32를 설치하면 302 버전이 설치됩니다. 하지만 최신 버전의 안정성 문제 때문인지 위와 같은 에러를 출력하면서 파이썬 스크립트가 정상적으로 실행되지 않습니다.
따라서 해결방법은 버전을 다운그레이드 해주는 것입니다.
pip install --upgrade pywin32==225
3. pyinstaller 패키징 후, win32com(win32api) 못찾는 현상
1) 문제 현상
가장 저를 괴롭혔던 문제이며, 구글링을 해보아도 원인을 알 수 없었던 문제였습니다.
멀쩡히 잘 돌아가던 파이썬 스크립트가 pyinstaller로 exe파일을 만들어서 실행시키니깐, 위에서 발생했던 2번 문제가 또 발생했습니다.
새로 생성한 가상환경을 '환경 변수'에 추가해주지 않아서 그런가해서 path에 추가해주고 컴퓨터를 재부팅 해보아도 문제는 해결되지 않았습니다.
2) 해결 방법
정말 운이 좋게도 겨우겨우 해결한 방법은 VScode의 터미널창이 아닌, Windows Powershell를 직접 열어서 pyinstaller 패키징하는 것이었습니다. Windows Powershell을 여는 방법은 아까 1번 문제에서 배우셨으니 따로 설명드리지 않을게요.
# " "사이에 패키징할 파이썬 파일의 절대경로를 입력
pyinstaller -w -F "C:\Python_Coding\EXCEL_PYTHON\Excel_sum.py"
VScode에서 실행하는 터미널에서 pyinstaller 패키징 시, 알수 없는 이유로 win32api를 import하지 않고 패키징 하는 것으로 보입니다.
<참고 자료>
1. 1번 문제 해결
https://samsons.tistory.com/16
2. 2번 문제 해결
'파이썬 패키지 > 실행파일 배포' 카테고리의 다른 글
[PyInstaller] 파이썬 실행파일(exe) 용량 줄이기 (ft. pyinstaller 버전 업그레이드 or 새로운 가상환경 설치) (1) | 2021.12.10 |
---|---|
[PyInstaller] 파이썬 프로그램 실행 파일로 만들어서 배포하는 방법 (ft. exe 파일 용량 줄이는 팁) (2) | 2021.06.08 |