Python Multiprocessing Fehlermeldung: AttributeError: module '__main__' hat kein Attribut '__spec__'
Ich bin mit Python 3.6 und versuche zu Folgen zusammen mit dem ersten Beispiel auf der folgenden website (vollständigen code auch unten) und erhalte die folgende Fehlermeldung:
https://docs.python.org/3.6/library/multiprocessing.html
Fehlermeldung:
AttributeError: module '__main__' has no attribute '__spec__'
Vollständige Beispiel-code:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
Habe ich versucht zu Googeln und die Suche Stack Overflow, aber ich habe nur einen gefunden anderen Fall dieser Fehler und er keine Antwort hatte.
- Der gepostete code funktioniert einwandfrei auf meinem Rechner
- Ich bin mit Anaconda / Spyder mit Python 3.6... vielleicht hat das etwas damit zu tun?
- Ich bin mit Spyder 3.1.2 mit Python 3.6.0 (Anaconda 4.3.1) in Windows 7
- Ich bin auf Spyder 3.1.4. Ich fand, der code funktioniert, wenn ich das Skript von der Eingabeaufforderung aus, sondern gibt Fehler in Spyder. Jede Idee, wenn es irgendeine Konfiguration Schritte zu machen Spyder spielen schön mit multiprocessing?
- Sind Sie sicher, dass Sie die richtige python-executable, die in Spyder?
- Der Python-interpreter auf "Default (dh die gleiche wie Spyder)". Ich änderte Anaconda Einstellungen ausgeführt werden, die in einem externen system-terminal und es läuft wunderbar. Etwas über die IPython console wirft Fehler.
- Ich habe diese Fehlermeldung heute (
module '__main__' has no attribute '__spec__'
) bei dem Versuch, dies zu tun pytorch tutorial mit Spyder. Speziell die Liniedataiter = iter(trainloader)
im tutorial der Auslöser für den Fehler. Die__spec__ = None
Lösung unten arbeitete für mich, aber es scheint seltsam, dass muss man zurückgreifen. Eine der Spyder devs kommentiert dieses Problem? @CarlosCordoba
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist nicht mit der code /Python-3.6, es ist mit Spyder.
Nach einigen Recherchen fand ich, dass der code läuft einwandfrei ausgeführt, wenn Sie in einem externen system-terminal, aber nicht bei der Ausführung im Spyder IPython console.
War ich in der Lage, dump den Inhalt der spec und weisen Sie Sie einer Variablen, die enthalten war innen main um dies zu ermöglichen code-Funktion innerhalb der IPython console.
__spec__
ist nicht normalerweise ein string. Da es funktioniert hat, Sie konnte wahrscheinlich nurNone
.__spec__ = __spec__
- und mein Kind-Prozesse begann zu starten und zu stoppen unendlich. Ich habe auch überprüft__spec__
variable, wenn das Skript gestartet wird in system-terminal. Es istNone
. Also ich denke__spec__ = None
ist der "richtige" Weg, um dieses Problem zu beheben.dem gleichen probelm in Spyder (Anaconda3, python 3.6), wenn ich versuche die externe terminal.
Fehlermeldung: AttributeError: module 'main' hat kein Attribut 'spec'
Änderte ich die Ausführen-Konsole 'Excute im aktuellen Konsole', und es angewendet.
dann, wenn diese doesnot arbeiten, versuchen andere conselor und ändern Sie dann wieder auf " Excute in der aktuellen Konsole.
Schließlich, es funktioniert.
keine "spec = None' ist erforderlich.