2014-03-26 15 views
5

Ich habe ein Problem mit meinem PyCharm. Nachdem ich von 3.3.5 bis 3.4 Python aktualisiert, ich habe einen ärgerlichen Fehler in PyCharm der folgenden Form:PyCharm Python 3.4 Problem: ungelöste Referenz

from multiprocessing import Queue, Process 

PyCharm unterstreicht Queue und Process in rot und zeigt eine nicht aufgelöste Referenz. Der Code läuft sowohl in der Befehlszeile als auch in PyCharm korrekt. Code-Vervollständigung scheint auch für diese Klassen gebrochen zu sein.

Ich vermute ein Problem mit PYTHONPATH, aber ich bin mir nicht sicher, wie man es löst.

System: Mac OS X 10.9.2, Python 3.4 durch Homebrew installiert, PyCharm 3.1.1

Antwort

11

Es ist nicht ein Problem mit PYTHONPATH. Wenn wir in Multiprozessing aussehen \ __ init__.py, sehen wir folgendes:

# 
# Copy stuff from default context 
# 

globals().update((name, getattr(context._default_context, name)) 
       for name in context._default_context.__all__) 
__all__ = context._default_context.__all__ 

Bemerkenswerter nichts in der Datei ist, die wie Queue-Prozess sieht usw.

Was ist nun das context._default_context? Wenn wir in Multiprozessing \ context.py aussehen, wir

class BaseContext(object): 
    ... 
    def Queue(self, maxsize=0): 
     '''Returns a queue object''' 
     from .queues import Queue 
     return Queue(maxsize, ctx=self.get_context()) 

So in Wirklichkeit sehen, ist Queue nie im Modul selbst definiert, sondern durch einig dynamischen Code, wird es richtig zur Laufzeit in Abhängigkeit von dem Betrieb des Benutzers System. Deshalb weiß Pycharm nicht, dass es Warteschlangen- und Prozessklassen im Multiprocessing-Modul gibt.

Vielleicht können Sie einen Fehlerbericht ablegen und versuchen, sie Code selektiv ausführen zu lassen, um diese dynamischen Namen herauszufinden oder eine Ausnahme zu machen und eine Problemumgehung, die Pycharm sagt, dass es tatsächlich Queue/Process-Klassen gibt das scheint, als würde es auf ihrer Prioritätenliste niedrig sein. Du wirst also wahrscheinlich damit leben müssen. (Im gleichen Boot hier)

+0

Vielen Dank für die Erklärung, ich 3.3.5 zurück zu Python zurückgekehrt. bis sie es lösen. Es ist kein großes Problem, aber es kann ziemlich nervig sein. – Sterbic

+0

Dies wurde für eine Weile behoben, Berichten zufolge in Build 138.913 – CrackerJack9

3

Ich würde auf jeden Fall ein Problem mit JetBrains melden, wenn es noch nicht existiert, aber ich würde Python nicht einfach herabsetzen, weil Ihre IDE einen Import nicht wie erwartet interpretiert (der eigentliche Interpreter) funktioniert noch).

Ich habe das gleiche Problem, einfach hinzufügen # noinspection PyUnresolvedReferences über die nicht aufgelösten Referenzen stumm den Compiler "Fehler". Natürlich würde ich lieben, dass das repariert wird und die # noinspection Linien entfernen wird, sobald es ist, aber es wird mich sicherlich nicht davon abhalten, Code mit PyCharm und Python 3.4 zu schreiben.

bearbeiten: Sieht aus wie jemand berichtet: http://youtrack.jetbrains.com/issue/PY-12860

bearbeiten: Wie verlautet in Build behoben 138,913