본문 바로가기

🚨[Python] package import error

@Jeeqong 2025. 3. 15. 03:20
반응형

🚨 에러코드

{user_path}/my-project % python tests/test_scraper.py    
Traceback (most recent call last):
  File "{user_path}/my-project/tests/test_.py", line 2, in <module>
    from scraper.scraper_parser import parse_html  # HTML 파싱 함수
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '{package}'

ModuleNotFoundError: No module named 'scraper.scraper_parser' 오류는 Python이 package 모듈을 찾을 수 없다는 뜻이다. 

 

🚀  단계별로 실행하면서 오류잡기!!

1. 프로젝트 루트에서 실행하기

먼저 현재 위치가 프로젝트 루트인지 확인하고, 맞지 않다면 경로 이동

cd /Users/my-project python tests/test_scraper.py

 

2.  -m 옵션으로 실행 (패키지 경로 문제 해결)

Python이 scraper를 패키지로 인식하지 못할 때 사용하는 방법

python -m tests.test_scraper

 

3.  PYTHONPATH 환경 변수 설정

Python이 scraper 폴더를 찾을 수 있도록 PYTHONPATH를 설정해본다.

임시 설정 (터미널을 닫으면 사라짐)

export PYTHONPATH=$(pwd) python tests/test_scraper.py

영구 설정 (.zshrc 파일에 추가)

echo 'export PYTHONPATH=$(pwd)' >> ~/.zshrc source ~/.zshrc

이제 다시 실행:

python tests/test_scraper.py

 

4. sys.path를 직접 추가

테스트 파일(tests/test_scraper.py) 맨 위에 아래 코드를 추가

import sys
import os

# 프로젝트 루트 경로를 sys.path에 추가
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

# 이제 모듈을 임포트
from scraper.scraper_parser import parse_html

그런 다음 다시 실행:

python tests/test_scraper.py

 

5.  venv 문제 해결

가상 환경을 사용 중이라면 올바르게 재실행

1.  가상 환경 비활성화 후 테스트 실행

deactivate python tests/test_scraper.py

2. 다시 가상 환경 활성화 후 실행

source venv/bin/activate 
python tests/test_scraper.py

 

6. Python이 올바른 경로를 검색하는지 확인

Python이 scraper 폴더를 찾고 있는지 확인하려면:

python -c "import sys; print(sys.path)"

출력된 목록에 /{Users}/my-project가 포함되어 있는지 확인!

만약 포함되지 않았다면 sys.path를 수동으로 추가한 뒤 실행:

PYTHONPATH=$(pwd) python tests/test_scraper.py

 

7.  setup.py를 이용한 로컬 패키지 설치

패키지를 로컬에서 설치하면 scraper를 정상작동 가능성 있음

1. 프로젝트 루트에 setup.py 생성 (없다면)

touch setup.py

 

2. 파일 내용 추가 (setup.py)

from setuptools import setup, find_packages setup( name="my-project", version="0.1", packages=find_packages(), )

 

3.설치 실행

pip install -e .

 

4.다시 테스트 실행

python tests/test_scraper.py

 

📌 최종 점검 리스트

✅ python -m tests.test_scraper 실행
✅ PYTHONPATH=$(pwd) python tests/test_scraper.py 실행
✅ sys.path.append(...) 추가 후 실행
✅ deactivate 후 다시 실행
✅ .zshrc에 PYTHONPATH 추가 (echo 'export PYTHONPATH=$(pwd)' >> ~/.zshrc && source ~/.zshrc)
✅ python -c "import sys; print(sys.path)" 출력값 확인
✅ setup.py로 패키지 설치 (pip install -e .)

 

 

 

..하고싶은말...추신..

슬픈현실이지만... 알고보니 함수명이라고 하나..클래스라고하나 폴더구조화 하고 파일네이밍 변경하면서 잘못들어가있어서 안되는거였....

혼자만 알고싶지만 그냥 자기반성겸 일기를 써본다..

반응형
Jeeqong
@Jeeqong :: JQVAULT

Jeeqong's vault : 정보/기록을 쌓아두는 공간 웹개발 포스팅 일상 리뷰를 기록하는 공간입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차