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)
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
Dies wurde für eine Weile behoben, Berichten zufolge in Build 138.913 – CrackerJack9