Ich versuche, ein requests
Modul zu importieren , aber ich habe diesen Fehler erhalten. Meine Python-Version ist 3.4 und läuft unter Ubuntu 14.04
>>> import requests
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/requests/packages/urllib3/connectionpool.py", line 10, in <module>
from queue import LifoQueue, Empty, Full
ImportError: cannot import name 'LifoQueue'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/requests/__init__.py", line 58, in <module>
from . import utils
File "/usr/local/lib/python3.4/dist-packages/requests/utils.py", line 26, in <module>
from .compat import parse_http_list as _parse_list_header
File "/usr/local/lib/python3.4/dist-packages/requests/compat.py", line 7, in <module>
from .packages import chardet
File "/usr/local/lib/python3.4/dist-packages/requests/packages/__init__.py", line 3, in <module>
from . import urllib3
File "/usr/local/lib/python3.4/dist-packages/requests/packages/urllib3/__init__.py", line 10, in <module>
from .connectionpool import (
File "/usr/local/lib/python3.4/dist-packages/requests/packages/urllib3/connectionpool.py", line 12, in <module>
from Queue import LifoQueue, Empty, Full
ImportError: No module named 'Queue'
python
python-requests
Ali Faki
quelle
quelle
Queue
. Der Traceback des OP macht jedoch deutlich, dass dasrequests
Modulqueue
zuerst versucht und dann zurückfällt, umQueue
es zu versuchen (wodurch die Version genau wie beschrieben portabel wird). Sie beantworten die Frage, die viele Menschen mit diesem Fehler haben, aber überhaupt nicht die Frage des OP.Die Warteschlange befindet sich im Multiprozessor-Modul.
from multiprocessing import Queue
quelle
multiprocessing.Queue
ist eine ganz andere Klasse mit viel höherem Overhead; Zum Einfädeln möchten SieQueue
vomqueue
(Py3) /Queue
(Py2) -Modul.requests
versucht korrekt, es von beiden Namen zu erhalten (es ist also versionunabhängig); Der Fehler weist auf ein völlig anderes Problem hin (wie das OP in seiner Antwort erklärt).multiprocessing.Queue
es auf Beizen basiert, ist es nicht einmal funktional gleichwertig. wenn Sie nicht-picklable Objekte haben immer zwischen Threads übergeben, wird es mit Erfolgqueue
/Queue
‚s -Queue
Klasse und nicht mitmultiprocessing.Queue
.Ich habe das Problem gelöst. Mein Problem war, dass ich die Datei queue.py im selben Verzeichnis hatte
quelle
queue.py
?Es liegt an der Python-Version. In Python 3 ist es
import Queue as queue
; im Gegenteil, in Python 2.x ist esimport queue
. Wenn Sie es für beide Umgebungen wünschen, können Sie etwas unten verwenden, wie hier erwähnttry: import queue except ImportError: import Queue as queue
quelle
import queue
; im Gegenteil in Python2.x ist esimport Queue
.In meinem Fall sollte es sein:
from multiprocessing import JoinableQueue
Da in Python2 Queue Methoden wie hat
.task_done()
, aber in Python3multiprocessing.Queue
diese Methode nicht hat undmultiprocessing.JoinableQueue
tut.quelle
Ich stoße auf dasselbe Problem und erfahre, dass das Warteschlangenmodul Klassen und Ausnahmen definiert, die die öffentlichen Methoden (Warteschlangenobjekte) definieren.
Ex.
workQueue = queue.Queue(10)
quelle
Sie müssen
Queuelib
entweder überPython Package Index (PyPI)
oder von der Quelle installieren .So installieren Sie mit pip: -
So installieren Sie mit easy_install: -
Wenn Sie einen Quell-Tarball heruntergeladen haben, können Sie ihn installieren, indem Sie Folgendes ausführen (als Root): -
quelle