본문 바로가기
Software/Python

pyinstaller 에러 virtualenv로 해결하기 (Python 3.8.10 버전은 피하세요)

by lovey25 2021. 7. 6.
반응형

파이썬 스크립트를 ". exe" 실행파일로 변환해 주는 "pyinstaller"에 대해서 언급한 적이 있었습니다. 

 

pyinstaller - 파이썬 코드를 실행파일(.exe)로 변환

".py" 확장자의 파이썬 코드는 매우 작은 용량이지만 방대한 일을 처리할 수 있는 신기한 파일입니다. 하지만 컴퓨터에 파이썬 interpreter가 설치되어 있어야 하고 코드에서 사용한 다양한 라이브

kwonkyo.tistory.com

코딩하면 늘 혼자서만 사용하기 때문에 pyinstaller를 사용할 일이 거의 없었는데요. 최근에 쓸 일이 생겨 오랜만에 패키징을 시켜 봤더니 에러가 발생했습니다.

예전에 해봤을 때와 달라진 것이라고 한다면 파이썬 버전이 달라진 것 말고는 없는데 "LoadLibraryEx", '시스템에서 파일에 액세스..."  뭐 이런 감도 안 잡히는 에러가 나서 처음에는 상당히 당황을 했었습니다. 

하지만 어딘가에는 다 답이 있겠죠. 찾아보니 이런 에러는 pyinstaller가 동작하는데 필요한 모듈? 라이브러리? 가 누락되었을 때 발생할 수 있다고 합니다. 

여러 버전의 파이썬을 사용하면서 충돌이 발생할 수도 있고 의존성 문제로 패키지 버전이 달라질 수도 있기 때문에 이런 문제를 미연에 방지하고자 가상 환경(Virtualenv)을 사용한다고 합니다. 가상 환경을 사용하는 방법에 대해서도 포스팅을 했으니 관련 내용은 아래 링크에서 확인해주세요.

 

Python Virtual Environment(Virtualenv) 사용하기

개요 Virtualenv(Virtual Environment)는 서로 다른 프로젝트들이 각각의 의존성을 보존할 수 있도록 프로젝트 개발환경을 분리시켜주는 도구입니다. 이런 도구가 필요한 이유는 다음과 같습니다. 진행

kwonkyo.tistory.com

virtualenv 패키지를 설치하고 가상 환경에 프로그램 실행에 필요한 모든 라이브러리들을 설치했습니다.

이제는 잘 되겠지 하는 생각으로 pyinstaller로 패키징을 했습니다.

pyinstaller.exe --onefile --noconsole crawler.py

그런데 이번에는 각종 파이썬 라이브러리들이 없다는 에러가 나옵니다.  "python-dev-tools" 패키지를 깔면 된다부터 해서 별의별 방법은 다 동원해 봤습니다. 여기서 전 몇 시간을 헤맸는지 기억도 안 나는데 결론은 파이썬 버전을 바꿔서 해결했습니다.

앞에서는 파이썬 3.8.10 버전을 사용했습니다. 3.8.10 버전에서는 인터넷에 나오는 각종 방법들 다 동원해 봤지만 pyinstaller가 동작하지 않았습니다. 혹시나 하는 마음에 3.8.9 버전을 설치하고 Virtualenv 설정해서 다시 처음부터 시작했습니다.

결국 파이썬 3.8.9 버전의 가상 환경에서 해결했습니다.

만약 유사한 pyinstaller를 사용하시는데 유사한 에러를 경험하신다면 먼저 지금 사용하고 계신 파이썬 버전에 대해서 Pyinstaller 이슈는 없는지 확인해보시고 virtualenv로 가상 환경 만들어서 해결해 보세요.

 

끝!

반응형

댓글