Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

ModuleNotFoundError 해결 방법: Python에서 'No module named MySQLdb' 오류 수정하기

MySQL은 Python에서 활용할 수 있는 가장 효율적인 데이터베이스 중 하나입니다. Python의 mysqldb 모듈을 사용하면 Python 애플리케이션과 MySQL 데이터베이스를 손쉽게 연결할 수 있습니다. 그러나 시스템에 해당 모듈이 설치되어 있지 않으면 "ModuleNotFoundError: No module named 'MySQLdb'" 오류가 발생합니다.

이 글에서는 이 오류가 발생하는 원인과 이를 해결하는 구체적인 방법을 단계별로 살펴보겠습니다.

오류가 발생하는 이유

Python 모듈은 하나 또는 여러 개의 패키지에 의존하여 동작합니다. mysqldb 모듈 역시 관련 패키지들이 함께 설치되어 있어야 정상적으로 사용할 수 있는데, 필요한 패키지 중 하나라도 설치되어 있지 않은 상태에서 모듈을 임포트하면 "no module named mysqldb" 오류가 나타납니다.

아래 코드처럼 모듈을 임포트하려고 할 때 오류가 발생하는 것을 확인할 수 있습니다.

>>> import MySQLdb
ModuleNotFoundError: No module named 'MySQLdb'

해결 방법: "MySQLdb" 모듈 설치하기

MySQLdb 모듈은 Python 기반 패키지 관리자인 PIP를 통해 설치할 수 있습니다. 먼저 시스템에 PIP가 설치되어 있어야 하며, 전체 해결 과정은 다음 단계와 같습니다.

1단계: PIP 설치

Linux 환경에서는 배포판에 따라 아래 명령어로 PIP를 설치할 수 있습니다.

$ sudo apt install python3-pip    # Debian 및 Ubuntu 계열
$ sudo yum install python3-pip    # CentOS7/RHEL
$ sudo dnf install python3-pip    # Fedora/CentOS8
$ sudo pacman -S python3-pip      # Arch 계열

Python2 환경에서 PIP를 설치하려면 패키지 이름으로 python-pip를 사용해야 합니다.

2단계: "mysqlclient" 패키지 설치

MySQLdb 모듈은 두 개의 핵심 패키지에 의존합니다. 그중 첫 번째는 Python이 MySQL 서버에 연결할 수 있도록 지원하는 mysqlclient 패키지입니다. 이 패키지가 없는 것이 모듈 임포트 실패의 주된 원인이며, 다음 명령어로 설치할 수 있습니다.

$ pip3 install mysqlclient

설치 과정에서 오류가 발생한다면, 시스템에 Python 개발 도구 패키지가 없어서일 가능성이 높습니다. 이 경우 아래 명령어로 필요한 빌드 패키지를 먼저 설치하세요.

$ sudo apt install python3-dev default-libmysqlclient-dev build-essential
$ sudo yum install python3-dev default-libmysqlclient-dev build-essential
$ sudo dnf install python3-dev default-libmysqlclient-dev build-essential

참고: apt는 Debian/Ubuntu 계열, yum은 CentOS/RHEL 계열, dnf는 Fedora 계열 배포판에서 사용하는 패키지 관리자입니다.

mysqlclient 설치가 완료되면 다시 모듈을 임포트해 보세요. 그래도 오류가 발생한다면 다음 단계로 진행합니다.

3단계: "mysql-connector-python" 설치

두 번째 패키지인 mysql-connector-python은 Python이 MySQL 데이터베이스에 접속할 수 있도록 돕는 공식 커넥터입니다. 다음 명령어로 설치할 수 있습니다.

$ sudo pip3 install mysql-connector-python

Python2용 PIP를 사용 중이라면 명령어의 pip3를 pip2로 바꾸어 실행하면 됩니다.

4단계: 결과 확인하기

모든 패키지 설치가 끝나면 Python 인터프리터에서 모듈을 다시 임포트하여 정상 동작 여부를 확인합니다.

>>> import MySQLdb

오류 없이 임포트가 완료되면 MySQLdb 모듈이 Python 환경에 성공적으로 등록된 것입니다.

마무리

"no module named mysqldb" 오류는 모듈을 임포트하는 데 필요한 패키지가 시스템에 설치되어 있지 않을 때 발생합니다. 대부분의 경우 mysqlclient 패키지만 설치하면 문제가 해결되며, 그렇지 않다면 mysql-connector-python 패키지를 추가로 설치하면 됩니다. 이 글이 Linux 환경에서 MySQLdb 모듈 오류를 해결하는 데 도움이 되기를 바랍니다.