스택큐힙리스트

pytest에서 PATH 문제 'ImportError: No module named YadaYadaYada'가 발생했습니다. 본문

카테고리 없음

pytest에서 PATH 문제 'ImportError: No module named YadaYadaYada'가 발생했습니다.

스택큐힙리스트 2023. 4. 19. 04:07
반응형

나는 Mac에서 easy_install 를 사용하여 pytest 를 설치하고 다음과 같은 파일 구조가있는 프로젝트에 대한 테스트를 작성하기 시작했습니다.

repo/

|--app.py

|--settings.py

|--models.py

|--tests/

|--test_app.py

리포 디렉토리 안에서 py.test 를 실행하면, 모든 것이 예상대로 동작합니다.

하지만 Linux나 Windows에서 동일한 작업을 시도하면 (둘 다 pytest 2.2.3이 설치되어 있음), 응용 프로그램 경로에서 무언가를 import 할 때 마다 오류가 발생합니다. 예를 들면, from app import some_def_in_app 입니다.

이 시스템에서 py.test 를 실행하기 위해 내 PATH 을 수정해야 할까요?

답변 1

어째서 py.test가 현재 디렉토리인 PYTHONPATH에 자동으로 추가되지 않는지 확실하지는 않지만, 여기에 임시 해결책이 있습니다 (당신의 리포지토리 루트에서 실행됩니다).

python -m pytest tests/

파이썬이 현재 디렉토리를 PYTHONPATH에 자동으로 추가하기 때문에 작동합니다.

답변 2

파이테스트(Pytest)를 사용할 때 'ImportError: No module named YadaYadaYada'와 같은 PATH 문제가 발생할 수 있다. 이 에러는 사용자가 테스트 스크립트에서 필요한 모듈(YadaYadaYada)을 불러올 수 없는 경우 발생한다. 이 문제를 해결하려면 몇 가지 단계를 따라야 한다.

먼저, 가장 간단한 문제인 PATH 문제를 확인해야 한다. 파이썬은 모듈을 찾을 때 sys.path 리스트를 사용한다. 사용자는 이 리스트에 모듈을 찾을 경로를 추가할 수 있다. 그러나 이 경로가 잘못 설정되거나 필요한 모듈이 다른 경로에 있는 경우 ImportError가 발생할 수 있다. 이 문제를 해결하기 위해서는 sys.path의 값을 수정하거나 PYTHONPATH 환경 변수를 설정해야 할 수 있다.

또한, 다른 문제인 모듈 이름 충돌도 있을 수 있다. 예를 들어, 다른 패키지에서 YadaYadaYada 모듈이 이미 사용 중인 경우, 파이썬은 해당 모듈을 찾을 때 충돌이 발생하여 ImportError가 발생할 수 있다. 이 경우에는 모듈 이름을 변경하거나 그 패키지를 사용하지 않도록 코드를 수정해야 한다.

마지막으로, 파이썬 가상 환경을 사용하고 있다면, 필요한 모듈이 적절하게 설치되어 있는지 확인해야 한다. 가상 환경에서는 일반적으로 시스템 레벨의 Python과는 별도로 모듈을 설치하고 업데이트해야 한다. 따라서, 가상 환경에서 필요한 모듈이 설치되어 있지 않다면, ImportError가 발생할 수 있다.

요약하면, pytest에서 'ImportError: No module named YadaYadaYada'와 같은 PATH 문제가 발생할 수 있다. 이 문제는 sys.path의 값 변경, PYTHONPATH 환경 변수 설정, 모듈 이름 변경, 가상 환경에서 모듈 설치 문제 등으로 인해 발생할 수 있다. 이 문제를 해결하려면, 사용자는 위의 단계를 따르고 필요한 모듈을 사용할 수 있도록 환경을 설정해야 한다.

반응형
Comments