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

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

pyenv현재 특정 버전을 설치하는 데 사용됩니다 python. 그런 다음 pipenv.NET에서 다양한 프로젝트를 위한 가상 환경을 만드는 데 사용합니다 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같은 코드 편집자는 테스트에서 해당 조항에 대해 불만을 표시 하고 빨간색으로 표시하고 "보통" 짜증나게 합니다.vimvscodeimport
  • pipenv run pytest테스트를 확인하기 위해 텍스트 편집기를 호출합니다 . src찾을 수 있는 모듈이 아니기 때문에 실패합니다 . 프로젝트 디렉터리의 터미널에서 동일한 명령을 호출하면 동일한 오류가 발생합니다.

python작동하는 것처럼 모듈 로 호출하면 pipenv run python -m pytest현재 디렉토리가 PYTHONPATH. 편집기를 시작하면 pipenv shell테스트도 작동합니다. 편집기를 시작하는 방법에 관계없이 import src.app유효하지 않은 것으로 표시됩니다.

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

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

답변1

pipenv문서 에 따르면 ; 호출된 .env디렉터리의 모든 파일이 로드됩니다.pipenv

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

예를 들어 .env프로젝트 루트에서 다음 콘텐츠를 만드는 것이 저에게 효과적입니다.

PYTHONPATH=$PYTHONPATH:.

emacs이제 가져오기에 문제가 발생하지 않고 직접 단위 테스트를 실행할 수도 있습니다 .

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

관련 정보