
부제: 당신이 ModuleNotFoundError
를 만났을 때, 범인은 생각보다 훨씬 교활할 수 있다.

안녕하세요. 오늘은 지난 며칠간 저를 잠 못 이루게 했던 파이썬 ModuleNotFoundError
와의 처절한 사투, 그리고 마침내 승리한 기록을 공유하려 합니다.
“분명히 pip install moviepy
로 설치했는데, 왜 파이썬은 모듈이 없다고 소리치는 걸까?”
이 단순한 의문으로 시작된 여정은 파이썬 버전, 시스템 권한, 캐시, 라이브러리 버전 호환성이라는 거대한 빙산을 파헤치는 대서사시가 되었습니다. 만약 당신도 이와 같은 미스터리한 오류의 늪에 빠져있다면, 이 글이 당신의 ‘지도’가 되어줄 것입니다.
1장: 평범한 시작, 그리고 거짓말
모든 것은 간단한 목표에서 시작되었습니다. moviepy
라이브러리로 이미지 여러 장을 붙여 동영상을 만드는 것. 저는 자신만만하게 터미널을 열고 외쳤습니다.
pip install moviepy
그리고 코드를 실행했습니다. 돌아온 것은 차가운 메시지였습니다.
ModuleNotFoundError: No module named 'moviepy.editor'
“오타인가? 다시 설치해보자.” 이것이 비극의 서막이었습니다.
2장: 유령의 정체 – 범인은 둘이다
아무리 설치해도 문제는 해결되지 않았습니다. 저는 의심하기 시작했습니다. “혹시 내가 라이브러리를 설치한 파이썬과 코드를 실행한 파이썬이 다른 게 아닐까?”
빙고. 제 PC에는 두 개의 파이썬이 있었습니다.
- Python 3.11:
PATH
에 등록된 ‘공식 파이썬’. 터미널에서python
을 치면 응답하는 녀석. - Python 3.10:
PATH
에 없는 ‘비밀 파이썬’. VS Code에서 프로젝트용으로 선택한 녀석.
제가 터미널에서 pip install
을 할 때마다, 모든 라이브러리는 엉뚱하게 Python 3.11
의 창고에 쌓이고 있었던 겁니다. 정작 일을 해야 할 Python 3.10
의 창고는 텅 비어있었죠.
교훈 #1: 파이썬이 여러 개일 땐, ‘누구에게’ 설치할지 명확히 하라.
# python.exe의 전체 경로를 지정하여 정확한 파이썬에게 명령한다. C:\path\to\your\python.exe -m pip install [라이브러리]
3장: 보이지 않는 벽, PermissionError
정확한 파이썬(3.10
)을 지정해 설치를 시도하자, 이번엔 더 깊은 문제가 드러났습니다. 라이브러리를 삭제하려는 순간, 시스템은 비명을 질렀습니다.
PermissionError: [WinError 5] 액세스가 거부되었습니다.
이것은 결정적인 단서였습니다. 제 파이썬 스크립트가 시스템 폴더 깊숙한 곳의 파일을 지우려 하자, Windows가 “넌 그럴 권한이 없어!”라며 막아선 것입니다. 이전 설치 과정에서 다른 프로그램이 파일을 붙잡고 있었거나, 권한 문제로 파일이 손상된 채 ‘좀비’처럼 남아있었던 것이죠.
교훈 #2: 라이브러리를 설치/삭제할 땐 ‘관리자 권한’을 부여하라.
VS Code든, 터미널이든, 아이콘 위에서 마우스 오른쪽 버튼을 클릭하고 ‘관리자 권한으로 실행’하는 것은 선택이 아닌 필수입니다.
4장: 모든 것을 해결해 줄 ‘해답지’의 등장
관리자 권한으로 정확한 파이썬에 설치를 시도했지만, 문제는 계속되었습니다. 바로 그때, 과거에 성공했던 코드(module_b.py
)가 ‘해답지’처럼 등장했습니다. 그 코드에는 우리가 몰랐던 두 가지 비밀이 담겨 있었습니다.
- ImageMagick 경로 설정:
moviepy
가 텍스트를 이미지로 만들 때ImageMagick
이라는 외부 프로그램을 사용하는데, 이걸 자동으로 못 찾는 경우가 많습니다. 성공했던 코드에는 이 경로를 직접 알려주는 ‘주문’이 있었습니다. - 라이브러리 버전의 비밀: 과거의 기록을 되짚어보니, “Pillow 라이브러리 다운그레이드”라는 메모가 있었습니다.
AttributeError: ... no attribute 'ANTIALIAS'
라는 오류. 이것이 바로 ‘최종 보스’였습니다.
최종 보스: 라이브러리 버전 충돌
문제의 핵심은 이것이었습니다.
moviepy
최신 안정 버전(1.0.3
)은 이미지 처리 라이브러리 Pillow
의 최신 버전(10.x
)과 호환되지 않습니다.
Pillow 10.0.0
버전부터 Image.ANTIALIAS
라는 오래된 기능이 사라졌는데, moviepy 1.0.3
은 여전히 그 기능을 사용하려고 하니 충돌이 났던 것입니다. 우리가 pip install moviepy
를 할 때마다, pip
는 각 라이브러리의 최신 버전을 설치하려 했고, 이로 인해 ‘호환되지 않는 팀’이 꾸려졌던 것입니다.
최종 해결책: ‘황금 조합’으로 팀을 꾸려라 (The Golden Command)
모든 삽질 끝에 찾아낸, 이 모든 문제를 한 번에 해결하는 ‘황금 레시피’는 다음과 같습니다.
- 관리자 권한으로 터미널을 연다.
- 아래의 ‘최종 명령어’를 실행하여, 정확한 버전의 라이브러리들을 ‘유령 캐시’ 없이, 강제로 재설치한다.
# 내가 사용하려는 파이썬 실행 파일의 전체 경로를 지정하고,
# moviepy와 Pillow의 '황금 조합' 버전을 명시하여 설치한다.
c:\path\to\your\python.exe -m pip install "moviepy==1.0.3" "Pillow==9.5.0" --force-reinstall --no-cache-dir
- 파이썬 코드 상단에,
moviepy
를import
하기 전에 ImageMagick의 경로를 알려주는 코드를 추가한다.
import os
os.environ["IMAGEMAGICK_BINARY"] = r"C:\Program Files\ImageMagick-7.1.1-Q16\magick.exe"
# 이제 안심하고 import 한다.
from moviepy.editor import *
결론: 에러 메시지는 빙산의 일각이다
ModuleNotFoundError
라는 단순한 에러 메시지 뒤에는, 여러 버전의 파이썬, 시스템 권한, 숨겨진 캐시, 그리고 가장 교활한 라이브러리 간 버전 충돌이라는 거대한 빙산이 숨어있었습니다.
이 글을 읽는 당신이 비슷한 문제에 부딪혔을 때, 저처럼 5일간 헤매지 않기를 바랍니다. 에러 메시지가 계속된다면, 한 걸음 물러나 환경 자체를 의심해보세요. 당신의 코드는 죄가 없을지도 모릅니다.
Happy Coding, 그리고 당신의 import
가 언제나 성공하기를!