webentwicklung-frage-antwort-db.com.de

Warum gibt PyCharm bei einigen Numpy-Importen ungelöste Referenzfehler an?

Die folgende Zeile in PyCharm wird durch die On-the-Fly-Inspektion mit ungelösten Referenzfehlern für jeden Import gekennzeichnet. (Sie sind rot unterstrichen.)

from numpy import tan, arcsin, arccos, arctan

Folgende Importe verursachen jedoch keine Fehler/Warnungen:

from numpy import sin, cos, arctan2, sqrt, cross, pi

Der Code, in dem ich diese Importe verwende, läuft einwandfrei ohne Fehler oder Warnungen. In der Regel verlasse ich mich auf die roten Fehler von PyCharm als Warnung, dass mein Code beschädigt ist und nicht ausgeführt wird. In diesem Fall ist PyCharm jedoch falsch.

Warum werden einige Funktionen von numpy von PyCharms Introspektion erkannt und andere nicht?

Aktuelle Versionen:

  • Windows 7 64-Bit
  • Python 2.7.5
  • PyCharm 3.1.2
  • Unpraktisch 1,8

Vielen Dank!

23
flutefreak7

Der Grund, warum Sie dies erhalten, liegt in der statischen Analyse von PyCharm. Python verwendet nun statische Skelette (einige werden vorab generiert und andere generiert), um Ihnen die Analyse zu ermöglichen. Schauen Sie sich die vorab generierten Skelette hier an -> https://github.com/JetBrains/python-skeletons

Dies kann gelöst werden, indem Folgendes aktiviert wird:

enter image description here

Wenn das jedoch nicht funktioniert:

enter image description here

dadurch wird der Fehler blockiert und als Kommentar über der Zeile angezeigt.

20
Games Brainiac

Die Python-Konfiguration wird an mindestens zwei Stellen angegeben: Run | Edit Configurations | Python | Python Interpreter und File | Settings | Project | Project Interpreter. Mein Fehler war, dass ich nicht die korrekte Python-Installation in File | Settings ... eingestellt habe. Daher bezog es sich auf eine Python-Konfiguration, bei der der Import nicht installiert war (z. B. NumPy).

Nachdem ich diese beiden Standorte so eingestellt habe, dass sie auf dieselbe, korrekte Python-Installation zeigen, habe ich einen File | Invalidate Caches / Restart ausgeführt, dann war es in Ordnung.

Ein dritter zu überprüfender Ort ist File | Default Settings... | Project Interpreter und stellt sicher, dass er mit den anderen Einstellungen übereinstimmt.

9
David Ching

Das Folgende hilft oft bei der Lösung von falsch-positiven unaufgelösten Verweisen

File | Invalidate Caches
7

PyCharm-Entwickler hat eine Problemumgehung für eine mögliche Ursache für einen Inspektionsfehler bereitgestellt: 

https://youtrack.jetbrains.com/issue/PY-32029

Überblick: Die Prüfung kann fehlschlagen, wenn sich im Projektverzeichnis ein venv-Ordner befindet. Klicken Sie mit der rechten Maustaste darauf, und markieren Sie das Verzeichnis als ausgeschlossen.

3
psarka

Sie können Inspektionen für bestimmte Bibliotheken (z. B. numpy) deaktivieren. Ich fand das sehr hilfreich, da meine Bildlaufleiste aufgrund dieses Problems ständig beleuchtet wurde. Gehen Sie zu Einstellungen -> Editor -> Inspektionen -> Python -> Nicht aufgelöste Verweise (am unteren Rand) und wechseln Sie zum Abschnitt Ignoriere Verweise rechts unten im Fenster. 

Fügen Sie einen Eintrag mit "numpy. *" Ohne die Anführungszeichen hinzu, und diese nicht aufgelösten Verweise werden nicht mehr in numpy angezeigt.

0
bingecoder

Ich konnte das Problem einfach mit einer virtualenv anstelle des Systeminterpreters beheben. Keine der anderen Methoden, die ich bisher gefunden habe, hat für mich funktioniert.

Ich verwende Windows 7, PyCharm Community Edition 2018.2.4, Python 3.6.7, Numpy 1.15.4

  1. Erstellen Sie ein neues Projekt mit dem Namen my_project und legen Sie fest, dass der Systeminterpreter File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select the system interpreter verwendet wird.
  2. Erstellen Sie das folgende Testskript script1.py im Projekt:

    import numpy as np
    print(np.tan(8))
    

    Das Ausführen dieses Skripts funktioniert nun einwandfrei und gibt einige Zahlen aus, aber Pycharm wirft eine ungelöste Referenzwarnung aus, und Ctrl->Click auf tan geht nicht wie gewünscht in den numpy-Code.

  3. Erstellen Sie die virtuelle Umgebung manuell

    $cd dir/to/my_project
    $virtualenv venv
    $venv\Scripts\activate
    (venv) $pip install numpy
    (venv) $deactivate
    

    Ersetzen Sie unter Linux die Aktivierungszeile durch source venv/bin/activate

  4. Weisen Sie PyCharm an, die virtuelle Umgebung zu verwenden: File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select Python 3.6 (my_project). Die Datei python.exe sollte sich in Ihrem Projektordner im Ordner venv befinden.
  5. Jetzt File -> Invalide Caches / Restart ... -> Invalidate and restart
  6. Warten Sie, bis die Indizierung abgeschlossen ist, und prüfen Sie, ob Sie Ctrl->Click für tan in Ihrem script1.py verwenden können.

Auf diese Weise konnte ich dasselbe Problem für andere Pakete wie torch und opencv beheben (einfach eine virtuelle Umgebung mit allen benötigten Paketen erstellen). Keine ungelösten Verweise mehr.

Keine Ahnung, warum es so funktionieren würde, würde aber nicht mit dem Systeminterpreter funktionieren.

0
Simon