태그 보관물: virtualenv

virtualenv

PyLint“가져올 수 없습니다”오류-PYTHONPATH를 설정하는 방법? __init__.py

Windows의 Wing IDE 내부에서 PyLint를 실행하고 있습니다. 프로젝트에 하위 디렉토리 (패키지)가 있고 패키지 내부에 최상위 레벨에서 모듈을 가져옵니다.

__init__.py
myapp.py
one.py
subdir\
    __init__.py
    two.py

내부 two.py에는 import one최상위 디렉토리 ( myapp.py실행 디렉토리 )가 Python 경로에 있기 때문에 런타임에 올바르게 작동합니다 . 그러나 two.py에서 PyLint를 실행하면 오류가 발생합니다.

F0401: Unable to import 'one'

이 문제를 어떻게 해결합니까?



답변

내가 알고있는 두 가지 옵션이 있습니다.

하나, PYTHONPATH모듈 위에 디렉토리를 포함 하도록 환경 변수를 변경하십시오 .

또는 ~/.pylintrc다음과 같이 모듈 위에 디렉토리를 포함하도록 편집 하십시오.

[MASTER]
init-hook='import sys; sys.path.append("/path/to/root")'

(또는 다른 버전의 pylint에서 init-hook은 [General]을 [MASTER]로 변경해야합니다)

이 두 옵션 모두 작동해야합니다.

희망이 도움이됩니다.


답변

경로를 변경하는 솔루션 init-hook은 좋지만 절대 경로를 추가해야한다는 사실을 싫어합니다. 결과적 으로이 pylintrc 파일을 프로젝트 개발자와 공유 할 수 없습니다. pylintrc 파일의 상대 경로를 사용하는이 솔루션은 나에게 더 효과적입니다.

[MASTER]
init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"

참고 pylint.config.PYLINTRC또한 존재하고 같은 값을 가진다 find_pylintrc().


답변

1) sys.path는 목록입니다.

2) 문제는 때때로 sys.path가 virtualenv.path가 아니며 virtualenv 에서 pylint를 사용하려는 경우입니다

3) 따라서, init-hook을 사용하십시오 ( ‘및 “pylint 구문 분석은 엄격합니다)

[Master]
init-hook='sys.path = ["/path/myapps/bin/", "/path/to/myapps/lib/python3.3/site-packages/", ... many paths here])'

또는

[Master]
init-hook='sys.path = list(); sys.path.append("/path/to/foo")'

.. 및

pylint --rcfile /path/to/pylintrc /path/to/module.py


답변

venv에서 pylint 경로를 구성하면 문제를 해결할 수 있습니다. $ cat .vscode / settings.json

{
    "python.pythonPath": "venv/bin/python",
    "python.linting.pylintPath": "venv/bin/pylint"
}


답변

__init__.py파이썬에게 dirs가 모듈이라는 것을 알리기 위해 두 디렉토리에 빈 파일이 있습니까?

폴더 내에서 실행하지 않을 때의 기본 개요는 (예를 들어 사용하지 않았지만 pylint ‘s에서) :

topdir\
  __init__.py
  functions_etc.py
  subdir\
    __init__.py
    other_functions.py

이 그렇다면 pylint가 자신의 절대 경로에서 실행되고있는 현재 디렉토리를 참조하지 않고 모듈의 인식 통역 파이썬, 그것은 액세스 할 수 있습니다 방법입니다 functions_etc.py같은 topdir.functions_etc또는 topdir.subdir.other_functions제공, topdir온입니다 PYTHONPATH.

업데이트 : 문제가 __init__.py파일 이 아닌 경우 모듈을 복사하거나 이동하십시오. c:\Python26\Lib\site-packages추가 패키지를 넣는 일반적인 장소이며 pythonpath에 있습니다. Windows 심볼릭 링크 또는 이와 동등한 기능을 수행하는 방법을 알고 있다면 대신 할 수 있습니다. http://docs.python.org/install/index.html 에는 개발 코드의 사용자 수준 디렉토리에 sys.path를 추가하는 옵션을 포함하여 더 많은 옵션이 있지만 실제로는 일반적으로 심볼릭 링크입니다. 내 로컬 개발 디렉토리를 사이트 패키지에 복사하는 것이 동일한 효과입니다.


답변

이 페이지에서 찾은이 질문에 대한 일반적인 답변 OPEN NOT NOT OPEN, SITE IS BUGED

작성 .pylintrc및 추가

[MASTER]
init-hook="from pylint.config import find_pylintrc;
import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"


답변

WingIDE와 어떻게 작동하는지 모르겠지만 Geany와 함께 PyLint를 사용하려면 외부 명령을 다음과 같이 설정하십시오.

PYTHONPATH=${PYTHONPATH}:$(dirname %d) pylint --output-format=parseable --reports=n "%f"

여기서 % f는 파일 이름이고 % d는 경로입니다. 누군가에게 유용 할 수 있습니다 🙂