Mam dwa projekty python w sublimetext3 z anakondą. Z kilku powodów mylących tylko w jednym z nich anaconda zgłasza typ podpowiedzi (PEP 0484) jako błędy "nieprawidłowej składni" (zarówno dla typów parametrów i funkcji). Jaki może być powód?anaconda + podublimowany, raporty typu podpowiedzi jako błędy
Odpowiedz
Aby rozwinąć odpowiedź @MattDMo „s, można wymusić pakiet Anakonda używać python3
tłumacza naciskając Cmd/Ctrl + Przesunięcie + P, a następnie wybierając:
Anaconda: Set Python Interpreter
Następnie wklej na drodze do tłumacza python3, które można znaleźć za pomocą which python3
:
upewnij się, aby umieścić w ścieżce virtualenv jeśli kod wykorzystuje pakiety w virtualenv: /path/to/.virtualenvs/nameofvenv/bin/python3
Jeśli nie jesteś w virtualenv, używać systemu python3
:
/usr/bin/python3
lub /usr/local/bin/python3
dla homebrew na python3
na mac.
Prawidłowe ustawienie go na python3 powinno naprawić błąd Invalid Syntax
w adnotacjach typu.
Można także edytować plik projektu bezpośrednio do ustawienia ścieżki TŁUMACZ:
{
"build_systems":
[
{
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"name": "Anaconda Python Builder",
"selector": "source.python",
"shell_cmd": "\"/path/to/.virtualenvs/venvname/bin/python3\" -u \"$file\""
}
],
"settings":
{
"python_interpreter": "/path/to/.virtualenvs/venvname/bin/python3"
}
}
Aby rozwinąć na odpowiedź @Nick Sweeting „s, to warto pamiętać, że typ podpowiedzi został wprowadzony do Pythona w wersji 3.5, więc jeśli Anaconda używa interpretera z poprzednią wersją Python3, a następnie zgłasza Type Hints jako nieprawidłową składnię. Aby rozwiązać ten problem, po prostu ustaw interpreter python na wersję 3.5 (lub wyższą).
Dobrze! Nie wiem, jak to się stało, ale to było to. – ardabro
To nie jest poprawne; Podpowiedź typu PEP-484 można używać również w Pythonie 2. Zobacz https://www.python.org/dev/peps/pep-0484/#type-comments i https://www.python.org/dev/peps/pep-0484/#stub-files na dwa sposoby aby to działało. Właściwie używam teraz podpowiedzi typu do przeniesienia dość dużej biblioteki Pythona 2 do Pythona 3. Jeśli Sublime Text nie wie, co jest możliwe, to jego obsługa dla PEP-484 jest niekompletna, ale to nie jest problem PEP-484. – mcepl
@mcepl Ta odpowiedź jest całkowicie poprawna w kontekście wtyczki Anaconda, którą OP używał w Sublime. Możliwe, że podpowiedzi/podpowiedzi typu wstecznego portu będą możliwe do Py2 za pomocą komentarzy lub plików pośredniczących, jak sugerujesz, ale oryginalny opis opisu funkcji PEP-3107 i rozwinięcie na nim opisane w PEP-484 są specyficzne dla Pythona 3. Zaktualizowałem odpowiedź, aby to odzwierciedlić. – MattDMo