문제점 및 증상
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
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[python] requests - 응답을 UTF-8로 지정하여 받는 방법 (0) | 2025.06.13 |
---|---|
ctypes.addressof() 함수를 이용하여 bytes 객체를 만드는 방법 (0) | 2025.06.12 |
[python] 쉘의 파이프 "|"를 subprocess.Popne()으로 처리하는 방법 (0) | 2025.04.14 |
PyInstaller - "ModuleNotFoundError: No module named 'debugpy'" 문제 해결하기 (0) | 2025.04.09 |
Flask 특정 조건 시, 특정 정보만 응답하는 방법 (0) | 2025.03.09 |