파이썬

파이썬) pyinstaller 실행파일 생성시 모듈 찾을 수 없음

이소금 2022. 4. 3. 22:31
반응형

안녕하세요~!

어제 이어 산을 하나 넘었다고 생각했는데, 또 새로운 난관에 봉착했습니다.

그렇지만 전!!! 쉽게 굴복하지 않습니다!!! 저는 이번에도 해결할 수 있습니다. 항상 그래왔거든요.

코딩은 이런 해결하는 즐거움이 큰 것 같습니다. 나의 코드가 바라는 행동을 정확히 수행할 때의 그 희열감이 꾸준히 코딩을 할 수 있는 원동력이 되는 것 같습니다. 다 사랑으로 키운 내 자식들 같아요 =w=

재능은 없지만 적성은 맞는 것 같습니다. 이렇게 저는 코딩을 통해 저를 조금 더 알아가는 것 같습니다.

오늘의 문제는 다음과 같습니다.

 

원인

스크립트에서는 정상적으로 실행되나 pyinstaller로 실행파일 생성 시 모듈을 찾을 수 없다는 오류 발생

사용한 라이브러리 중 pymysql 라이브러리가 정상적으로 import 되지 않는 이슈였습니다.

분명 설치가 되어 있는 라이브러리라 pip으로 재설치 해도 Required already satisfied라며 해당 디렉토리도 친절하게 알려주기도 합니다.

 

추측한 해결 방안

정확한 문제는 파악하지 못했으나, 추측하건데 이유는 다음과 같습니다. 현재 저의 파이썬 환경은 anaconda와 python 38-32 환경 두가지가 있습니다.

vsc 환경에서 스크립트 파일 실행 시 정상적으로 동작하나 (anaconda 환경을 직접 지정할 수 있음), 해당 파일이 있는 디렉토리로 가서 idle 환경으로 열면 python 38-32 환경에서 열리게 되고, pymysql 라이브러리는 해당 환경에 설치되어 있지 않기 때문에 모듈을 찾을 수 없다고 생각했습니다.

그래서

1. 어느 파이썬 버전에 라이브러리가 설치되어 있는지 확인

2. 해당 라이브러리를 환경변수로 설정해서 globally 접근할수 있게 하는것

이 해결 방안이라고 생각했었는데요, 결국 원인은 이게 아니었습니다.

 

진짜 해결 방안

pyinstaller로 생성한 파일을 보다보니, 왜 이 파일만 전달해줘도 배포받는 사람들이 환경설정을 따로 하지 않아도 파일을 실행시킬 수 있는지 알 것 같습니다.

코드를 짜면서 사용했던 라이브러리들도 다 같이 패키징 되기 때문입니다...!

이런 맥락으로, 패키징 하는 코드에 pymysql을 import 해주는 코드 한줄을 추가해주면, pyinstaller가 패키징 할 때, 이 라이브러리도 필요하겠구나 라고 인식해서 이 파일도 같이 패키징 되겠구나 싶어, 저 코드 한줄을 추가하고 실행파일을 생성했습니다.

그랬더니, 되더라구요!!!!!!!

여러분들도, 비슷한 문제를 겪으신다면 한번 시도해 보세요!! @_@

 

그럼 모두, 해피코딩 하세요~!!!!!!!!!!!!! :D

반응형