2016-02-21 7 views
5

Ich habe zwei Python-Projekte in Sublimetext3 mit Anaconda. Aus einigen mysteriösen Gründen nur in einem von ihnen meldet Anaconda Typ Hinting (PEP 0484) als "ungültige Syntax" Fehler (für beide: Parameter und Funktionsarten). Was kann der Grund sein?Anaconda + SublimeText, meldet Typ Hinting als Fehler

Antwort

6

Anacondaâs Anwendung von PEP-484 Type Hints (beeinflusst durch PEP-3107 Funktion Anmerkungen und der mypy statischen Typ Checker) zu Python gilt nur 3. Ich würde das Projekt übernehmen, die Fehler wirft wird linted von Python 2.

+0

Richtig! Ich weiß nicht, wie es passiert ist, aber das war es. – ardabro

+0

Das ist eigentlich nicht korrekt; Ein PEP-484-Typhinweis kann auch in Python 2 verwendet werden. Unter https://www.python.org/dev/peps/pep-0484/#type-comments und https://www.python.org/dev/peps/pep-0484/#stub-files finden Sie zwei Möglichkeiten damit es funktioniert. Tatsächlich verwende ich jetzt Typ Hinweise für die Portierung einer ziemlich großen Python 2 Bibliothek nach Python 3. Wenn Sublime Text nicht weiß, was möglich ist, dann ist die Unterstützung für PEP-484 unvollständig, aber das ist nicht das Problem von PEP-484. – mcepl

+1

@mcepl Diese Antwort ist vollkommen korrekt im Zusammenhang mit dem Anaconda-Plugin, das das OP in Sublime verwendete. Es kann möglich sein, type hinting/checking auf Py2 zurückzusetzen, indem Kommentare oder Stub-Dateien wie vorgeschlagen verwendet werden, aber die ursprüngliche Anmerkungsbeschreibung der PEP-3107-Funktion und die in PEP-484 beschriebene Erweiterung sind Python 3-spezifisch. Ich habe die Antwort aktualisiert, um dies zu berücksichtigen. – MattDMo

8

zu erweitert auf @MattDMo ‚s Antwort, können Sie das Anaconda-Paket zwingen, die python3 Interpreter durch Drücken Cmd/Ctrl +Umschalt +P, dann die Wahl zu verwenden:

Anaconda: Set Python Interpreter

fügen Sie dann in dem Pfad zu Ihrem python3-Interpreter, den Sie which python3 mit finden:

Vergewissern Sie sich in Ihrem virtualenv Weg zu bringen, wenn Ihr Code Pakete im virtualenv verwendet: /path/to/.virtualenvs/nameofvenv/bin/python3

Wenn Sie nicht in einem virtualenv sind, verwenden Sie Ihr System python3:

/usr/bin/python3 oder /usr/local/bin/python3 für Homebrew des python3 auf dem mac.

Korrekte Einstellung auf Python3 sollte den Invalid Syntax Fehler bei Typanmerkungen beheben.

Sie können auch Ihre Projektdatei direkt bearbeiten, die Interpreter Wege zu beschreiten:

{ 
    "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" 
    } 
} 
1

auf @Nick Sweeting ‚s Antwort zu erweitern, ist es erwähnenswert, dass Type Hinting zu erinnern, wurde in Version 3.5 Python eingeführt, so dass, wenn Anaconda verwendet einen Interpreter mit einer früheren Version von Python3 und meldet dann Typ Hints als ungültige Syntax. Um dies zu beheben, setzen Sie einfach den Python-Interpreter auf Version 3.5 (oder höher).