Visual Studio Code의 Pylint "unresolved import"오류


138

다음 설정을 사용하고 있습니다.

  • macOS v10.14 (Mojave)
  • 파이썬 3.7.1
  • 비주얼 스튜디오 코드 1.30
  • 파일 린트 2.2.2
  • 장고 2.1.4

Linting을 사용하여 Visual Studio Code에서 내 삶을 좀 더 쉽게 만들고 싶습니다. 그러나 모든 가져 오기에 대해 "미해결 가져 오기"상태가 있습니다. 기본 Django 가져 오기에서도 (즉, django.db 가져 오기 모델에서).

가상 환경 Python 파일을 보지 않기 때문이라고 생각합니다.

모든 것이 잘 작동하지만 짜증나 기 시작했습니다.

내가 선택한 인터프리터는 모든 시스템 버전의 Python입니다. 내 가상 환경 Python이 전혀 보이지 않는 것 같습니다 (내 작업 공간과 동일한 디렉토리에 있지 않으므로 해당 부분이 의미가 있음).

내가 설정 한 경우 python.PythonPath을settings.json의 파일, 그냥 그것을 무시하고 옵션으로 내 가상 환경 경로를 나열하지 않습니다. 또한 전역 Python 설정에서 설정을 시도했지만 표시되지 않습니다.

작동하도록 빠른 수정이 있습니까?


3
pip install pylint-django코드 설정이 추가 대 다음에 :"python.linting.pylintArgs": [ "--load-plugins=pylint_django", ],
하기 Vaibhav 이씨

불행하게도, 난 여전히 같은 결과를 얻을 수 @VaibhavVishal (내 settings.json 파일에 추가)
JAC

4
실제로 가져 오기 패키지를 매우 늦게 감지하는 VScode 문제는 다시 시작한 후 자동으로 수정됩니다.
Anupam Haldkar

답변:


116

당신의에서 작업 공간 설정 ,이 같은 파이썬 경로를 설정할 수 있습니다 :

{
    "python.pythonPath": "/path/to/your/venv/bin/python",
}

30
이런 종류의 작품. Python 특정 가져 오기의 경우 지금은 해결하지만 내 모델은 해결하지 않습니다 (예 : "from users.models import User"는 여전히 해결할 수 없다고 말합니다). 그것에 대한 생각?
jAC

7
확실하지 않다. 셸에서 vs 코드 창을 다시로드 code <project_directory> -r하거나 vscode를 다시 시작하십시오.
ruddra

5
잘 모르겠습니다. 가끔 작업 공간 디렉토리 가 제대로 설정되지 않은 경우 발생할 수 있습니다 . 의 manage.py루트에 있는지 확인하십시오 workspace. 또한 기둥이 올바르게 구성되었는지
ruddra

3
천재 야! 내 작업 공간이 프로젝트의 루트 수준에서 시작되지 않았기 때문입니다. 일단 조정이 시작되면 작동합니다. 정말 고마워!
jAC

1
정말 고마워! 오래된 문제를 극복하도록 도와주었습니다!

216

수락 된 답변은 자체 모듈을 가져올 때 오류를 수정하지 않습니다.

작업 공간 설정에서 다음 설정을 사용하십시오 .vscode/settings.json.

"python.autoComplete.extraPaths": ["./path-to-your-code"],

참조 : 문제 해결, 해결되지 않은 가져 오기 경고


4
혼합 작업 공간이 있으며 모든 파이썬 코드는 하위 폴더에 있습니다. 하위 폴더에 .vscode를 추가하면 작동하지 않으며 이것이 유일한 해결책입니다.
데이지

1
vscode settings.json에 대한 최고의 답변입니다. (workspace.xml을 사용하는 경우 허용되는 답변이 갈 방법이 될 수 있지만 확실하게 말할 수는 없습니다. 혼합 작업 공간도 사용하고 있습니다) 솔루션에 대한 많은 감사합니다.
없음

3
이것이 답이되어야합니다.
Richard Li

1
이것은 나를 위해 일했습니다! 참조 링크는 완벽하게 설명합니다. TL; DR; 하위 디렉터리에 사용자가 만든 로컬 스크립트의 경우 위의 설정은 Python 인터프리터가 하위 디렉터리를 자체 작업 공간으로 인식하는 데 도움이됩니다. 그 후 작업 공간에서 스크립트를 인식하고 전체 모듈 또는 개별 메소드를 가져올 때 가져 오기를 해결합니다.
Avid 프로그래머

5
안녕하세요 여러분! 이중 별표가 루트 디렉토리 아래의 모든 하위 폴더를 의미하는 경우 [ "./path-to-your-code"]가 [ "./**"] 일 수 있음을 발견했습니다! 이것은 더 간단한 해결책입니다.
alan23273850

63

다른 방법 : 명령 인터페이스를 사용하십시오!

Cmd/ Ctrl+ Shift+ PPython : 인터프리터를 선택하고 → 원하는 패키지가있는 것을 선택합니다.

여기에 이미지 설명 입력


2
제 경우에는 이것이 효과가 없었지만 다른 사람들에게 도움이되기를 바랍니다.
jAC

그래 그게 정신이야, 복잡한 해결책이 아니야, 나에게 일어난 일이야 :)
ted

이것은 나를 위해 일했습니다. 넣다 누군가는 여전히 2019 년에 궁금 해서요
Safder

@Safder가 아닙니다. VIRTUALENV 사용
dillon.harless

이것은 나를 위해 일했습니다. 나는 각 파이썬 프로젝트는 나는 새가 디렉토리 구조를 가지고 있기 때문에 venv이와 나는에서 특정 파이썬을 가리 venv해당 프로젝트에 대한 디렉토리
cryanbhu

41

이 문제는 이미 GitHub에서 열렸습니다.

Python 미해결 가져 오기 문제 # 3840

MagnuesBrzenk와 SpenHouet의 두 가지 매우 유용한 답변이 있습니다.

현재 가장 좋은 해결책은 프로젝트 루트 폴더에 .env 파일을 만드는 것입니다. 그런 다음 다음과 같이 PYTHONPATH를 추가하십시오.

PYTHONPATH=YOUR/MODULES/PATH

그리고 settings.json에 다음을 추가하십시오.

"python.envFile": ".env"

6
감사합니다. 완벽하게 작동했습니다! "${workspaceFolder}/.env" PYTHONPATH=FolderName
KowaiiNeko

1
Microsoft Python Language Server를 사용할 때 편집 가능한 설치와 관련된 일반적인 문제가있었습니다. 그러나 현재 여기에 설명 된 새로운 수정 사항 이후 인 것 같습니다. github.com/microsoft/python-language-server/issues/… 문제가 수정되었으며 ExtraPaths를 사용 하여 가져 오기를 추가 할 수 있습니다. 더 도움이 문제 해결 봐 : github.com/microsoft/python-language-server/blob/master/...
토마스 츄 디크

감사합니다 @TomaszChudzik-설정 : "python.autoComplete.extraPaths": [ "./src"]가 매력처럼 작동했습니다!
로버트

또 다른 해결책은 ( add2virtualenv YOUR/MODULES/PATH예를 들어) virtualenv에 코드베이스 모듈을 추가 하고이 virtualenv를 파이썬 인터프리터로 선택하는 것입니다.
Antwan

21

settings.json파일 에이 코드가 있으면 삭제하십시오.

{
    "python.jediEnabled": false
}

34
약간의 설명을 추가하는 것이 좋습니다.
Tiw

1
이 줄을 편집하는 것은 프로젝트에서 큰 변화입니다. 행 : "python.jediEnabled": false는 이전 언어 서버를 비활성화하고 새 Microsoft Python 언어 서버를 활성화합니다. 여기를보세요 : github.com/Microsoft/vscode-python/issues/2177 envFile 에 필요한 종속성을 추가하는 것이 훨씬 더 간단하다고 생각합니다. 다른 답변에 설명되어 있습니다. 새로운 Microsoft Python Language Server를 사용하면 intellisense가 훨씬 더 잘 작동합니다.
Tomasz Chudzik

저에게는 그 반대의 경우 settings.json에서 jedi를 활성화하는 것이 저에게 효과적입니다. 자세한 내용은 여기를 참조하십시오. stackoverflow.com/a/57269144/2877493
nairb

@Tiw 특히 다른 답변이 정반대를 제안하기 때문에.
Neinstein



17

나처럼 더 시각적 인 경우 메뉴 파일기본 설정설정 ( Ctrl+ ,) 에서 Visual Studio Code 구성을 사용할 수 있습니다 . 이동ExtensionsPython으로 .

분석 : 사용 안함 섹션 에서 다음 메시지의 억제를 추가하십시오. unresolved-import:

Visual Studio Code 설정


3
상대적 가져 오기에 대한 미해결 가져 오기는 분명히 부정확합니다.
Satya Mishra

이것은 문제에 대한 노크가 아닌 경고 만 수정합니다. 파이썬 경로 방법을 사용하면 가져 오기 경고가 사라지고 "드릴 인"( "정의로 이동") 및 "매개 변수 힌트"도 작동합니다.
davidfrancis

9

가상 환경과 관련된 인터프리터를 선택해야합니다.

여기에 이미지 설명 입력

여기를 클릭하십시오 (하단 상태 표시 줄).

여기에 이미지 설명 입력

작업중인 가상 환경을 선택하기 만하면됩니다. 끝난.

때로는 통역사를 선택해도 작동하지 않습니다. 프로세스를 다시 반복하면 해결됩니다.

여기에 이미지 설명 입력


1
이것은 정확히 내 문제였습니다 (Mac에서) 적절한 인터프리터를 선택하면 문제가 해결되었습니다. 감사!
Mahm00d

9

이 솔루션을 제외하고는 어떤 솔루션도 작동하지 않았습니다. settings.json에서 "Pylance"또는 "Microsoft"를 교체하면 문제가 해결되었습니다.

"python.languageServer": "Jedi"

7

이 문제가 얼마나 많은 솔루션을 가지고 있는지 궁금합니다. 위의 대부분을 시도했지만 아무것도 효과가 없었습니다. 유일한 해결책은 settings.json 파일에서 Microsoft가 아닌 Jedi로 Python 언어 서버를 설정하는 것입니다.

"python.languageServer": "Jedi"

6

이전 답변 중 어느 것도 나를 위해 일하지 않았습니다. 그러나 내 settings.json 파일에 아래 두 줄을 모두 추가했습니다 .

"python.analysis.disabled": [
    "unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]

첫 번째 줄은 실제로 linting 오류를 숨 깁니다. 확실히 영구적 인 해결책은 아니지만 화면을 깔끔하게 정리합니다.

이 대답은 나에게 두 번째 줄을 주었다 : ProtoBuf가 Python 구조를 컴파일 한 VS Code PyLint 오류 E0602 (정의되지 않은 변수)

나보다 파이썬을 더 잘 이해하는 사람이 하나 더 설명 할 수있을 것입니다.


기쁜 사람들은 이것이 유용하다고 생각하지만 두 번째 키-값 쌍을 설명 할 수있는 사람이 있습니까?
dillon.harless

4

내 솔루션

이 솔루션은 현재 프로젝트에만 해당됩니다.

  1. 프로젝트 루트에서 폴더를 만듭니다. .vscode

  2. 그런 다음 파일을 만듭니다. .vscode/settings.json

  3. 파일 setting.json에 다음 줄을 추가합니다 (Python 3 용).

    {
        "python.pythonPath": "/usr/local/bin/python3",
    }
    
  4. 이것은 Python 2의 예입니다.

    {
        "python.pythonPath": "/usr/local/bin/python",
    }
    
  5. Python 설치 위치를 모르는 경우 명령을 실행 which python하거나 which python3터미널에서 실행하십시오 . Python 위치를 인쇄합니다.

  6. 이 예제는 Dockerized Python-Django에서 작동합니다 .


4

나에게 문제는 내가 작업하고있는 프로젝트와 관련이 있었다. 그것을 알아내는 데 시간이 걸렸으므로 도움이되기를 바랍니다.

원래 폴더 구조 :

    root/
    __init__.py  # Empty

        folder/
            __init__.py # Empty

            sub_folder_b/
                my_code.py
            sub_folder_c/
                another_code.py

another_code.py에서 :

from folder.sub_folder_b import my_code.py

이것은 Visual Studio Code에서 intellisense를 트리거하지 않았지만 정상적으로 실행되었습니다.

반면에 가져 오기 경로에 "root"를 추가하면 intellisense가 작동하지만 실행할 때 ModuleNotFoundError가 발생합니다.

from root.folder.sub_folder_b import my_code.py

이 솔루션은 _ 제거하는 것이었다 초기화 에만 _ 떠나 "폴더"디렉토리 내 _.py 파일을 초기화가 에있는 _.py /root.


3

Shinebayar G의 솔루션 이 효과가 있었지만 다른 솔루션은 좀 더 우아합니다.

Python 미해결 가져 오기 문제 # 3840 에서 복사 :

다음 예제 프로젝트 구조가 주어집니다.

  • workspaceRootFolder
    • .vscode
  • ... 다른 폴더
  • codeFolder

이 문제를 해결하기 위해 수행 한 작업 :

  1. 작업 공간 폴더 (여기서는 workspaceRootFolder)로 이동하여 .env 파일을 만듭니다.
  2. 이 빈 .env 파일에 PYTHONPATH = codeFolder 줄을 추가합니다 (codeFolder를 폴더 이름으로 대체).
  3. settings.json에 "python.envFile": "$ {workspaceFolder} /. env"를 추가합니다.
  4. Visual Studio Code 다시 시작

2

이것은 나를 위해 작동합니다.

명령 팔레트 ( Ctrl+ Shift+ P)를 열고 "Python : 인터프리터 선택"을 선택합니다.

이렇게하면 Visual Studio Code에서 Python 인터프리터를 설정합니다.


나의 경우에는. 내 파이썬 2 인터프리터가 잘 작동합니다. 아주 잘 협력 할 수 내 파이썬 3 없습니다
lone_coder

2

Visual Studio Code는 실제 기본 폴더를 고려하는 대신 현재 폴더를 기본 폴더로 간주하기 때문에 발생합니다.

수정하는 빠른 방법은 기본 폴더에 대한 인터프리터 경로를 제공하는 것입니다.

Command+ Shift+ P(또는 대부분의 다른 시스템에서는 Ctrl+ Shift+) P를 누릅니다 .

Python 인터프리터 입력

사용 가능한 옵션에서 Python을 설치 한 경로를 선택하십시오.


2

Python : Language Server를 'Jedi'로 변경하면 저에게 효과적이었습니다. 처음에는 'Windows'였습니다.


1

다른 솔루션이 있습니다. Visual Studio Code 인스턴스가에 저장된 virtualenv를 선택 .venv했지만 잘못된 Python 바이너리를 사용하고있었습니다. 그것은 사용하고 있었다 .venv/bin/python3.7; 파란색 상태 표시 줄의 스위처를 사용합니다.

사용하도록 변경 .venv/bin/python했고 모든 가져 오기가 올바르게 해결되었습니다.

이 작업을 수행 할 때 Visual Studio Code가 백그라운드에서 수행하는 작업이 무엇인지 모르고 이것이 내 문제를 일으키는 이유를 이해하지 못합니다.하지만 저에게는 작업 영역 설정을 편집하는 것보다 약간 더 간단한 솔루션이었습니다.


1

Pylint 오류가 발생한 경우 다음을 설치하십시오.

pipenv install pylint-django

그런 다음 루트 폴더에 .pylintrc 파일을 만들고 다음을 작성하십시오.

load-plugins=pylint-django

1

사용중인 경우 pipenv가상 environment.in settings.json파일 의 경로를 지정해야 합니다. 예 :

{
    "python.pythonPath": 
           "/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python"
}

이것이 도움이 될 수 있습니다.


1

나를 위해 python, pylint 및 autopep8의 경로를 로컬 환경 경로로 설정하면 작동했습니다.

작업 공간의 경우 다음을 추가 / 변경하십시오.

"python.pythonPath": "...\\your_path\\.venv\\Scripts\\python.exe",
"python.linting.pylintPath": "...\\your_path\\.venv\\Scripts\\pylint.exe",
"python.formatting.autopep8Path": "...\\your_path\\.venv\\Scripts\\autopep8.exe",

작업 공간으로 VS Code를 저장하고 다시 시작하십시오. 끝난!


이것은 저에게도 효과적이었습니다.보다 구체적으로 "python.linting.pylintPath"를 설정하면 문제가 해결되었습니다. Python 3.9로 업그레이드 할 때까지이 문제가 발생하지 않았습니다. 내 생각 엔 그들이 사용하는 기본 파일 린트 경로가 있습니다.
areed1192

0

Ctrl+ Shift+로 가져 오기 오류를 해결했습니다 P. "Preferences settings"를 입력하고 Preferences Open Settings (JSON) 옵션을 선택합니다.

그리고 줄을 추가하십시오 "python.pythonPath": "/usr/bin/"

따라서 JSON 콘텐츠는 다음과 같아야합니다.

{
    "python.pythonPath": "/usr/bin/"
}

다른 구성 행이있는 경우 유지하십시오. 자동 완성을 위해 PIP를 사용하여 설치 한 모든 모듈을 가져와야합니다.


0

내 솔루션은 이전 디렉터리에서 Visual Studio Code를 여는 것이 었습니다.


"이전 디렉토리" 란 무엇을 의미 합니까? "parent directory" 를 의미 합니까? 또는 다른 것?
Peter Mortensen

프로젝트 전에 디렉토리에있는 콘솔 난 단지 개방 VSCode
예레미야 카세레스

0

제 경우에는 이미 Conda 환경이 활성화되어 있었지만 여전히 로컬 Python 모듈을 자동 완성, 엿보기 정의 등에 사용할 수 있기를 원했습니다.

파이썬 경로 목록을 추가하는 것과 같은 많은 솔루션을 시도했지만 마침내 해결 된 것은 Conda에서 lib/python{your version}/site-packages로컬 모듈로 의 심볼릭 링크를 만드는 것이 었습니다 .


0

Jedi 언어 서비스를 사용하여 포함하려고 할 때 오류가 발생하는 라이브러리가 하나 있고 그것 없이는 잘 작동합니다 (예 : C # 하나).

라이브러리는 jsonslicer이며 내가 설치 한 외부 C 라이브러리에 의존합니다 /usr/local/lib. 그게 그것과 관련이 있을까요?

Conda 환경 에 Jedi 서비스와 라이브러리를 설치하고 Visual Studio 내에서 해당 환경을 사용했습니다. 런타임과 터미널에서는 제대로 작동하지만 소스 파일의 문제를 확인할 때는 작동하지 않으며 오류로 표시됩니다.


0

먼저 플러그인을 설치했는지 확인하세요.하지만 작업 공간 디렉토리가 제대로 설정되지 않았을 가능성이 있습니다. Pylint를 확인하고 기본 settings.json 파일을 편집하십시오.

{
    "python.pythonPath": "/usr/local/bin/python3",
    "git.ignoreLimitWarning": true
}

"Pylint 확인" 이란 무엇을 의미 합니까? 체크 박스? 존재 / 설치되어 있습니까? 다른 것? 여기 댓글이 아닌 ( "편집 :", "업데이트 :"또는 유사한 기능 없이) 답변편집하여 응답 하십시오 .
Peter Mortensen

0

코드 러너를 설치하고 settings.json 폴더에 아래 코드를 추가합니다.

    "code-runner.executorMap": {
        "python": "python3 -u",
    }

"python": "(모듈 또는 경로가있는 Python 실행 파일) -u",


"코드 러너"란 무엇입니까? 여기에 주석이 아닌 답변편집하여 참조를 추가 할 수 있습니까 ?
Peter Mortensen

0

나는 세 가지 방법으로이 문제에 직면했다. 각각에 대해이 질문에 대한 답변에서 솔루션을 사용할 수 있지만, 저는 모든 것을 함께 모 으려고 생각했습니다.

  1. 먼저 일부 모듈을 가져 오는 동안 "Unresolved Import"가 발생했고 가상 환경 대신 글로벌 pip에서 설치가 진행되고 있음을 알았습니다.

    이 문제는 Python 인터프리터 때문이었습니다. Shift+ Ctrl+를 사용하여 Visual Studio Code에서 인터프리터를 선택한 P다음 Select Python Interpreter. 여기에서 Venv 인터프리터를 선택 하십시오.

  2. 두 번째 문제는 위의 변경으로 내 문제가 완전히 해결되지 않았습니다. 이번에는 settings.json 파일 때문이었습니다 . 프로젝트 디렉터리에 settings.json 파일 이없는 경우 파일을 만들고 여기에 다음 줄을 추가합니다.

        {
            "python.pythonPath": "apis/bin/python"
        }
    

    이것은 기본적으로 Visual Studio Code에 venv에있는 Python 인터프리터를 사용하도록 지시합니다.

  3. 세 번째 문제는 다른 프로그램에서 사용자 지정 Python 모듈 또는 파일을 가져 오는 동안 발생했습니다. 이를 위해서는 폴더 구조를 이해해야합니다. venv의 Python이 bin 안에 있으므로 모듈의 폴더를 지정해야합니다 (대부분의 경우 응용 프로그램 폴더). 제 경우에는 app,

        from app.models import setup_db
    

    구두로, models.py에서 import setup_db는 폴더에 있습니다.


0

venv, vscode 1.48.2를 사용하는 python 3.8.5와 동일한 문제가 있습니다. (env 폴더) / lib / site-packages에는 패키지가 포함되어 있지 않습니다. 이 설정 (.vscode / settings.json)을 사용합니다.

   {
        "python.autoComplete.extraPaths": [
            "./**",
        ],
        "python.pythonPath": "env\\Scripts\\python.exe",
        "python.languageServer": "Microsoft"
   }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.