Używam następującej konfiguracji
- macOS 10.14 (Mojave)
- Python 3.7.1
- Visual Studio Code 1.30.0
- Pylint 2.2.2
- Django 2.1.4
Chcę użyć lintingu, aby trochę ułatwić sobie życie w Visual Studio Code. Jednak dla każdego importu mam stan „import nierozwiązany”. Nawet przy domyślnych importach Django (np. Z modeli importu django.db).
Przypuszczam, że dzieje się tak, ponieważ nie widzi plików Pythona w środowisku wirtualnym.
Wszystko działa dobrze, ale zaczyna być irytujące.
Opcje interpretera, które mam, to wszystkie wersje systemowe Pythona. Wydaje się, że w ogóle nie widzi mojego środowiska wirtualnego Python (nie znajduje się w tym samym katalogu co mój obszar roboczy, więc ta część ma sens).
Jeśli skonfiguruję python.PythonPath w pliku settings.json , po prostu go zignoruje i nie wyświetli mojej ścieżki środowiska wirtualnego jako opcji. Próbowałem też skonfigurować go w moich globalnych ustawieniach Pythona, ale też się nie pojawia.
Czy istnieje szybkie rozwiązanie, aby to działało?
pip install pylint-django
, a następnie w ustawieniach kodu vs dodaj to:"python.linting.pylintArgs": [ "--load-plugins=pylint_django", ],
Odpowiedzi:
W ustawieniach obszaru roboczego możesz ustawić ścieżkę Pythona w następujący sposób:
{ "python.pythonPath": "/path/to/your/venv/bin/python", }
źródło
code <project_directory> -r
) lub po prostu zrestartuj vscode.manage.py
znajduje się w katalogu głównymworkspace
. Upewnij się również, że pylint jest poprawnie skonfigurowanyZaakceptowana odpowiedź nie naprawi błędu podczas importowania własnych modułów.
Użyj następującego ustawienia w ustawieniach obszaru roboczego
.vscode/settings.json
:"python.autoComplete.extraPaths": ["./path-to-your-code"],
Odniesienie: Rozwiązywanie problemów, nierozwiązane ostrzeżenia dotyczące importu
źródło
Alternatywny sposób: użyj interfejsu poleceń!
Cmd/ Ctrl+ Shift+ P→ Python: Select Interpreter → wybierz ten z pakietami, których szukasz:
źródło
venv
, z tymvenv
Ten numer został już otwarty na GitHub:
Nierozwiązany problem importu w Pythonie # 3840
Istnieją dwie bardzo przydatne odpowiedzi, autorstwa MagnuesBrzenk i SpenHouet.
Na razie najlepszym rozwiązaniem jest utworzenie pliku .env w folderze głównym projektu. Następnie dodaj do niego PYTHONPATH w ten sposób:
A w swoim settings.json dodaj:
"python.envFile": ".env"
źródło
"${workspaceFolder}/.env"
PYTHONPATH=FolderName
add2virtualenv YOUR/MODULES/PATH
na przykład) i wybranie tego virtualenv jako interpretera Pythona.Jeśli masz ten kod w swoim
settings.json
pliku, usuń go:{ "python.jediEnabled": false }
źródło
Udało mi się to rozwiązać, włączając jedi w .vscode \ settings.json
"python.jediEnabled": true
Odniesienie z https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675
źródło
Kiedy robię
> reload window
, naprawia to.Odniesienie: Nierozwiązany problem importu Pythona # 3840, komentarz dkavraal
źródło
Jeśli jesteś bardziej wizualny jak ja, możesz użyć konfiguracji Visual Studio Code w menu Plik → Preferencje → Ustawienia ( Ctrl+ ,). Idź do Rozszerzenia → Python .
W sekcji Analiza: Wyłączone dodaj pominięcie następującego komunikatu
unresolved-import
::źródło
Musisz wybrać tłumacza związanego ze środowiskiem wirtualnym.
Kliknij tutaj (na dolnym pasku stanu):
I po prostu wybierz środowisko wirtualne, z którym pracujesz. Gotowe.
Czasami nawet po wybraniu tłumacza to nie zadziała. Po prostu powtórz ten proces ponownie i powinien go rozwiązać.
źródło
Żadne z rozwiązań nie zadziałało oprócz tego. Zastąpienie „Pylance” lub „Microsoft” w pliku settings.json rozwiązało moje.
"python.languageServer": "Jedi"
źródło
Zastanawiam się, ile rozwiązań ma ten problem (lub nie mam), próbowałem większości z powyższych, nic nie działało, jedynym rozwiązaniem, które działało, jest ustawienie serwera języka python na Jedi zamiast Microsoft w pliku settings.json:
"python.languageServer": "Jedi"
źródło
Żadna z poprzednich odpowiedzi nie działała dla mnie. Dodanie obu poniższych wierszy do mojego pliku settings.json jednak.
"python.analysis.disabled": [ "unresolved-import" ], "python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
Pierwsza linia tak naprawdę po prostu ukrywa błąd lintingu. Z pewnością nie jest to trwałe rozwiązanie, ale porządkuje ekran.
Ta odpowiedź dała mi drugą linię: VS Code PyLint Error E0602 (niezdefiniowana zmienna) ze skompilowaną strukturą Pythona ProtoBuf
Może ktoś, kto rozumie Pythona bardziej niż ja, może to wyjaśnić bardziej.
źródło
Moje rozwiązanie
To rozwiązanie dotyczy tylko bieżącego projektu.
W katalogu głównym projektu utwórz folder
.vscode
Następnie utwórz plik
.vscode/settings.json
W pliku
setting.json
dodaj linię (dotyczy Pythona 3){ "python.pythonPath": "/usr/local/bin/python3", }
To jest przykład dla Pythona 2
{ "python.pythonPath": "/usr/local/bin/python", }
Jeśli nie wiesz, gdzie znajduje się twoja instalacja Pythona, po prostu uruchom polecenie
which python
lubwhich python3
na terminalu. Wyświetli lokalizację Pythona.Ten przykład działa dla zdokeryzowanego Pythona - Django.
źródło
Dla mnie problem był związany z projektem, nad którym pracowałem. Zajęło mi trochę czasu, zanim to rozgryzłem, więc mam nadzieję, że to pomoże:
Oryginalna struktura folderów:
root/ __init__.py # Empty folder/ __init__.py # Empty sub_folder_b/ my_code.py sub_folder_c/ another_code.py
W another_code.py:
from folder.sub_folder_b import my_code.py
Nie wywołało to funkcji Intellisense w programie Visual Studio Code, ale została wykonana OK.
Z drugiej strony dodanie „root” do ścieżki importu sprawiło, że Intellisense zadziałało, ale wywołało ModuleNotFoundError podczas wykonywania:
from root.folder.sub_folder_b import my_code.py
Rozwiązaniem było usunięcie pliku _ init _.py w katalogu „folder”, pozostawiając tylko _ init _.py znajdujący się w
/root
.źródło
Rozwiązanie od Shinebayar G zadziałało, ale to drugie jest nieco bardziej eleganckie:
Skopiowano z Pythona nierozwiązany problem importu nr 3840 :
Biorąc pod uwagę następującą przykładową strukturę projektu:
Co zrobiłem, aby rozwiązać ten problem:
źródło
To działa dla mnie:
Otwórz paletę poleceń ( Ctrl+ Shift+ P) i wybierz „Python: Select Interpreter”.
W ten sposób ustawiasz interpreter języka Python w programie Visual Studio Code.
źródło
Dzieje się tak, ponieważ program Visual Studio Code traktuje bieżący folder jako folder główny, zamiast brać pod uwagę rzeczywisty folder główny.
Szybkim sposobem rozwiązania problemu jest podanie ścieżki tłumacza do głównego folderu.
Naciśnij Command+ Shift+ P(lub Ctrl+ Shift+ Pw większości innych systemów).
Wpisz interpreter języka Python
Wybierz ścieżkę, w której zainstalowałeś Pythona z dostępnych opcji.
źródło
Zmiana Python: Language Server na „Jedi” działała dla mnie. Początkowo był to „Windows”.
źródło
Mam inne rozwiązanie: moje wystąpienie Visual Studio Code odebrało virtualenv zapisane w
.venv
, ale używało niewłaściwego pliku binarnego Pythona. Używał.venv/bin/python3.7
; używając przełącznika na niebieskim pasku stanu.Zmieniłem go na używanie
.venv/bin/python
i wszystkie moje importy zostały poprawnie rozwiązane.Nie wiem, co robi Visual Studio Code za kulisami, kiedy to robię, ani nie rozumiem, dlaczego spowodowało to mój problem, ale dla mnie było to nieco prostsze rozwiązanie niż edycja ustawień mojego obszaru roboczego.
źródło
W przypadku błędu Pylint zainstaluj następujące elementy
Następnie utwórz plik .pylintrc w folderze głównym i napisz, co następuje
źródło
Jeśli używasz
pipenv
, musisz określić ścieżkę dosettings.json
pliku virtual environment.in . Na przykład :{ "python.pythonPath": "/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python" }
To może pomóc.
źródło
U mnie zadziałało, jeśli skonfiguruję ścieżki dla pythona, pylint i autopep8 do ścieżek środowiska lokalnego.
Dla swojego obszaru roboczego dodaj / zmień to:
"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",
Zapisz i uruchom ponownie VS Code z obszarem roboczym. Gotowe!
źródło
Rozwiązałem błąd importu przez Ctrl+ Shift+ P. Wpisz „Ustawienia preferencji” i wybierz opcję Preferencje Otwórz ustawienia (JSON)
I dodaj linię
"python.pythonPath": "/usr/bin/"
Tak więc zawartość JSON powinna wyglądać następująco:
{ "python.pythonPath": "/usr/bin/" }
Zachowaj inne wiersze konfiguracji, jeśli są obecne. Powinno to zaimportować wszystkie moduły, które zostały zainstalowane przy użyciu PIP do autouzupełniania.
źródło
Moim rozwiązaniem było otwarcie Visual Studio Code w poprzednim katalogu.
źródło
W moim przypadku miałem już aktywowane środowisko Conda , ale nadal chciałem, aby lokalne moduły Pythona były dostępne do autouzupełniania, wglądu do definicji itp.
Próbowałem wielu rozwiązań, takich jak dodanie listy ścieżek Pythona itp., Ale ostatecznie rozwiązałem to dla mnie, tworząc symboliczne łącze z Conda
lib/python{your version}/site-packages
do mojego modułu lokalnego.źródło
Mam jedną bibliotekę, która popełnia błąd podczas próby dołączenia jej za pomocą usługi językowej Jedi i działa bez niej (tj. C #).
Biblioteka to jsonslicer i zależy od zewnętrznej biblioteki C, w której zainstalowałem
/usr/local/lib
. Czy to może mieć z tym coś wspólnego?Zainstalowałem usługę Jedi i bibliotekę w moim środowisku Conda i korzystałem z tego środowiska w Visual Studio. Działa dobrze w czasie wykonywania i na moim terminalu, ale nie podczas sprawdzania problemów w moich plikach źródłowych i pojawia się jako błąd.
źródło
Najpierw upewnij się, że zainstalowałeś wtyczkę, ale prawdopodobnie katalog obszaru roboczego nie jest poprawnie ustawiony. Po prostu sprawdź Pylint i edytuj podstawowy plik settings.json.
{ "python.pythonPath": "/usr/local/bin/python3", "git.ignoreLimitWarning": true }
źródło
Zainstaluj program uruchamiający kod i dodaj poniższy kod w folderze settings.json:
"code-runner.executorMap": { "python": "python3 -u", }
"python": "(plik wykonywalny Pythona z modułami lub jego ścieżką) -u",
źródło
Zmierzyłem się z tym problemem na trzy sposoby. Chociaż dla każdego z nich w odpowiedziach na to pytanie dostępne jest rozwiązanie, po prostu pomyślałem, że to wszystko połączę.
Najpierw otrzymałem „Nierozwiązany import” podczas importowania niektórych modułów i zauważyłem, że moje instalacje odbywały się w globalnym pip, a nie w środowisku wirtualnym.
Ten problem był spowodowany przez interpreter języka Python. Musisz wybrać interpreter w Visual Studio Code za pomocą Shift+ Ctrl+, Pa następnie wpisz
Select Python Interpreter
. Wybierz tutaj swojego tłumacza venv .Drugi problem: powyższa zmiana nie rozwiązała całkowicie mojego problemu. Tym razem było to spowodowane plikiem settings.json . Jeśli nie masz pliku settings.json w katalogu projektu, utwórz go i dodaj w nim następujący wiersz:
{ "python.pythonPath": "apis/bin/python" }
To po prostu powie programowi Visual Studio Code, aby używał interpretera języka Python, który znajduje się w pliku venv.
Trzeci problem dotyczył importowania niestandardowego modułu lub pliku Pythona w innym programie. W tym celu musisz zrozumieć strukturę folderów. Ponieważ Python in venv znajduje się w bin, będziesz musiał określić folder swojego modułu (w większości przypadków folder aplikacji). W moim przypadku było to
app
,from app.models import setup_db
Werbalnie zaimportuj setup_db z models.py znajduje się w folderze aplikacji .
źródło
Mam ten sam problem z Pythonem 3.8.5 przy użyciu venv, vscode 1.48.2 Znalazłem swoje rozwiązanie. W (folder env) / lib / site-packages nie zawiera pakietów. Używam tego ustawienia (.vscode / settings.json)
{ "python.autoComplete.extraPaths": [ "./**", ], "python.pythonPath": "env\\Scripts\\python.exe", "python.languageServer": "Microsoft" }
źródło