현재 저는 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
로드합니다 ..env
pipenv
이는 (예를 들어) test_app.py
레이어 작업 중에 열면 프로젝트가 (평소와 같이) 로드되지만 자동으로 로드되며 파일의 내부 종속성이 작동한다는 것을 의미합니다.emacs
python
pipenv
.env
예를 들어 .env
프로젝트 루트에 다음 콘텐츠를 사용하여 만드는 것이 나에게 적합합니다.
PYTHONPATH=$PYTHONPATH:.
emacs
이제 가져오기 문제 없이 단위 테스트를 직접 실행할 수도 있습니다 .
이것이 내가 작동하게 할 수 있었던 유일한 방법이지만 솔루션이 촌스럽고 우아하지 않은 느낌이 듭니다.