PYTHONPATH가 업데이트되지 않았습니다.

PYTHONPATH가 업데이트되지 않았습니다.

현재 저는 pyenv특정 python버전을 설치하는 데 익숙합니다. 그런 다음 이를 사용하여 pipenv다양한 프로젝트를 위한 가상 환경을 만듭니다 python.

현재 내 프로젝트 구조는 다음과 같습니다.

foo/
  src/app.py
  src/__init__.py
  tests/unit/test_app.py
  tests/unit/__init_.py

test_app.py주어진 수의 테스트와 마찬가지로 가져옵니다 app.py.

import src.app

두 가지 질문이 있습니다.

  • 코드 편집자는 테스트에서 이 조항을 좋아 emacs하거나 vim실제로 vscode불만을 표시 import하여 빨간색으로 표시하고 "보통" 짜증나게 합니다.
  • pipenv run pytest테스트를 확인하기 위해 텍스트 편집기에서 호출합니다 . src찾을 수 있는 모듈이 아니기 때문에 실패합니다 . 프로젝트 디렉터리의 터미널에서 동일한 명령을 호출하면 동일한 오류가 발생합니다.

python모듈로 호출 하면 pipenv run python -m pytest현재 디렉토리를 에 추가하므로 작동합니다 PYTHONPATH. pipenv shell. 어떻게 편집기를 실행해도 유효하지 import src.app않은 것으로 표시됩니다.

편집기 설정을 실행하면 PYTHONPATH=$PYTHONPATH:.테스트도 작동하지만 구문 검사에서는 여전히 문제가 발생합니다.

emacs편집기를 사용하여 이를 처리하는 가장 깨끗한 방법은 무엇입니까 vim? 나는 pycharm이 문제를 "자동으로" 해결하기 위해 유사한 도구를 사용하고 싶지 않습니다 .

답변1

파일을 기반으로 호출 디렉터리의 모든 파일을 pipenv로드합니다 ..envpipenv

이는 (예를 들어) test_app.py레이어 작업 중에 열면 프로젝트가 (평소와 같이) 로드되지만 자동으로 로드되며 파일의 내부 종속성이 작동한다는 것을 의미합니다.emacspythonpipenv.env

예를 들어 .env프로젝트 루트에 다음 콘텐츠를 사용하여 만드는 것이 나에게 적합합니다.

PYTHONPATH=$PYTHONPATH:.

emacs이제 가져오기 문제 없이 단위 테스트를 직접 실행할 수도 있습니다 .

이것이 내가 작동하게 할 수 있었던 유일한 방법이지만 솔루션이 촌스럽고 우아하지 않은 느낌이 듭니다.

관련 정보