프로그래밍/Python

[python] pytest에서 "ModuleNotFoundError: No module named 'apt_pkg'" 오류 발생 문제

채윤아빠 2025. 6. 7. 16:51

문제점 및 증상

python3에서 pytest를 설치 후, 실행하였을 때 다음과 같은 오류가 발생하였습니다.

$ pytest test-1.py
Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 28, in <module>
    from CommandNotFound import CommandNotFound
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
    from CommandNotFound.db.db import SqliteDatabase
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

다음과 같이 sqlite3 관련 명령을 설치하였으나, 동일한 오류가 발생하였습니다.

sudo apt-get install sqlite3

테스트 환경

  • OS : Ubuntu 22.04
  • Python : 3.10 -> 3.11

원인 분석

Ubuntu 22.04에 기본 설치된 python3의 버전이 3.10.12였습니다.
이를 수동으로 "3.11" 버전을 설치하고, 파이썬이 기본으로 3.11이 동작하도록 update-alternatives 명령을 수행해 둔 것이 문제였습니다.

/usr/lib/python3/dist-packages 폴더에서 "apt_pkg*" 관련 파일을 확인해 보면 다음과 같았습니다.

$ cd /usr/lib/python3/dist-packages
$ ls apt_pkg*
apt_pkg.cpython-310-x86_64-linux-gnu.so

apt_pkg-stubs:
__init__.pyi

기본으로 설치된 "apt_pkg" 관련 파일이 파이선 3.10으로 되어 있어서, update-alternatives 명령을 통하여 파이썬 3.11이 기본으로 동작하도록 하였을 경우, 해당 버전에 맞는 "apt_pkg"를 찾지 못하여 발생하는 문제였습니다.

python3.11에 맞는 "apt_pkg"를 설치할 수가 없어서, 파이썬 기본 버전을 3.10으로 낮추었습니다.
파이썬 버전을 낮춘 이후에는 pytest가 정상적으로 동작하였습니다.

$ sudo update-alternatives --config python3
[sudo] password for hbesthee: 
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.11   2         auto mode
  1            /usr/bin/python3.10   1         manual mode
  2            /usr/bin/python3.11   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

참고자료

728x90
반응형