J'essaie d'importer le module requests
, mais cette erreur s'est produite lorsque ma version de python est 3.4 s'exécutant sur 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'
Je résous le problème. Mon problème était que j'avais un fichier nommé queue.py dans le même répertoire.
import queue
est en minuscule q
dans Python 3.
Changez Q
en q
et tout ira bien.
(Voir le code dans https://stackoverflow.com/a/29688081/632951 pour la commutation intelligente.)
La file d'attente se trouve dans le module de multitraitement de manière à:
from multiprocessing import Queue
Dans mon cas, cela devrait être:
from multiprocessing import JoinableQueue
Depuis python2, Queue a des méthodes comme .task_done()
, mais en python3, multiprocessing.Queue
n'a pas cette méthode et multiprocessing.JoinableQueue
.
C'est à cause de la version Python. Dans Python 3 c'est import Queue as queue
; au contraire dans Python 2.x c'est import queue
. Si vous le souhaitez pour les deux environnements, vous pouvez utiliser quelque chose ci-dessous, comme mentionné ici
try:
import queue
except ImportError:
import Queue as queue
Je rencontre le même problème et apprends que le module de file d’attente définit des classes et des exceptions, ainsi que les méthodes publiques (objets de file d’attente).
Ex.
workQueue = queue.Queue(10)