Das folgende einfache Skript einen Import in python3 aufwirft:Kann nicht Queue initiieren in python3
from multiprocessing import Queue
queue = Queue()
print("OK")
Der Schlüssel um diesen Fehler zu reproduzieren ist, diese Datei zu benennen queue.py
, und dann werden die folgenden Meldungen angezeigt:
Traceback (most recent call last):
File "queue.py", line 3, in <module>
queue = Queue()
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/context.py", line 100, in Queue
from .queues import Queue
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/queues.py", line 20, in <module>
from queue import Empty, Full
File "/home/wangc/temp/queue.py", line 3, in <module>
queue = Queue()
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/context.py", line 100, in Queue
from .queues import Queue
ImportError: cannot import name 'Queue'
Wenn die Datei als queueue.py
benannt ist, dann ist alles in Ordnung.
Ich denke, das ist, weil Multiprocessing-Modul versucht, Warteschlange aus meinem queue.py zu importieren, da sein Name mit einer Datei im Multiprocessing-Modul übereinstimmt.
Wenn es jedoch funktioniert, wie Python funktioniert, dann sollte ich Dateinamen aller möglichen internen Bibliotheken vermeiden, was nicht praktikabel ist.
Wird dieser Fehler auf den gleichen Dateinamen meiner Datei und einige Dateien im Multiprocessing-Modul zurückgeführt? Und wenn es so ist, wie kann ich sicherstellen, dass meine Dateinamen sich von Dateien einer möglichen Bibliothek in der allgemeinen Programmierung unterscheiden?
Die 'Queue' kommt eigentlich aus dem' queue' Paket in der Standardbibliothek. –
Dies ist in der Tat, wie Python funktioniert - überprüfen Sie http://StackOverflow.com/Questions/1224741/trying-to-import-Module-with-the-Same-Name-as-Abuilt-In-Module- Causes- an-import – daveruinseverything
Dann sollte ich Namen einer möglichen Bibliothek vermeiden. Wie kann ich das machen? –