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
같은 코드 편집자는 테스트에서 해당 조항에 대해 불만을 표시 하고 빨간색으로 표시하고 "보통" 짜증나게 합니다.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
이제 가져오기에 문제가 발생하지 않고 직접 단위 테스트를 실행할 수도 있습니다 .
이것이 내가 작동하게 할 수 있는 유일한 방법이지만 솔루션은 촌스럽고 우아하지 않은 느낌을 줍니다.