Python 导入错误:没有名为“队列”的模块
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33432426/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ImportError: No module named 'Queue'
提问by Ali Faki
I am trying to import requests
module, but I got this error
my python version is 3.4 running on ubuntu 14.04
我正在尝试导入requests
模块,但出现此错误我的 python 版本是 3.4,在 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'
采纳答案by Ali Faki
I solve the problem my issue was I had file named queue.py in the same directory
我解决了我的问题是我在同一目录中有名为 queue.py 的文件
回答by peter
Queue is in the multiprocessing module so:
队列位于多处理模块中,因此:
from multiprocessing import Queue
回答by Arjun sharma
You need install Queuelib
either via the Python Package Index (PyPI)
or from source.
您需要Queuelib
通过Python Package Index (PyPI)
源代码或从源代码安装。
To install using pip:-
要使用 pip 安装:-
$ pip install queuelib
To install using easy_install:-
使用 easy_install 安装:-
$ easy_install queuelib
If you have downloaded a source tarball you can install it by running the following (as root):-
如果您已经下载了源代码压缩包,您可以通过运行以下命令(以 root 用户身份)来安装它:-
python setup.py install
回答by Pacerier
import queue
is lowercaseq
in Python 3.
import queue
在 Python 3 中是小写的q
。
Change Q
to q
and it will be fine.
更改Q
到q
,它会被罚款。
(See code in https://stackoverflow.com/a/29688081/632951for smart switching.)
(有关智能切换,请参阅https://stackoverflow.com/a/29688081/632951 中的代码 。)
回答by Panfeng Li
In my case it should be:
就我而言,它应该是:
from multiprocessing import JoinableQueue
from multiprocessing import JoinableQueue
Since in python2, Queue has methods like .task_done()
, but in python3 multiprocessing.Queue
doesn't have this method, and multiprocessing.JoinableQueue
does.
由于在 python2 中, Queue 有类似 的方法.task_done()
,但在 python3multiprocessing.Queue
中没有这个方法,并且multiprocessing.JoinableQueue
有。
回答by asfawh
I run into the same problem and learn that queue module defines classes and exceptions, that defines the public methods (Queue Objects).
我遇到了同样的问题,并了解到队列模块定义了类和异常,它们定义了公共方法(队列对象)。
Ex.
前任。
workQueue = queue.Queue(10)
回答by GPrathap
It's because of the Python version. In Python 3 it's import Queue as queue
; on the contrary in Python 2.x it's import queue
. If you want it for both environments you may use something below as mentioned here
这是因为 Python 版本。在 Python 3 中,它是 import Queue as queue
; 相反,在 Python 2.x 中它是import queue
. 如果您希望在这两种环境中使用它,您可以使用下面提到的内容here
try:
import queue
except ImportError:
import Queue as queue