2017-03-10 36 views
1

工作时的例子在一本书上的Python并行编程,我遇到了以下代码错误使用了多队列:builtins.ImportError:不能导入名“空”

File "C:\pyDev\multiproc\queue-test.py", line 4, in <module> 
     queue = multiprocessing.Queue() 
    File "C:\Anaconda3\Lib\multiprocessing\context.py", line 100, in Queue 
     from .queues import Queue 
    File "C:\Anaconda3\Lib\multiprocessing\queues.py", line 20, in <module> 
     from queue import Empty, Full 

builtins.ImportError: cannot import name 'Empty' 

一些试验后,我确定,生成此错误所需的全部内容是以下代码(这是上述错误消息中提到的所有queue-test.py文件)。

import multiprocessing 

if __name__ == "__main__": 
    queue = multiprocessing.Queue() 

我一台机器上运行的Python 3.5.1与4.1.0蟒蛇与Windows 7我已经与蟒蛇2.5移植从书上面的代码和示例到另一台机器使用Python 2.7.11 .0,在Windows 10中,它在该机器上工作正常。

考虑到可能在我的Python安装中存在损坏的文件或其他问题,我尝试重新安装Anaconda,但它没有帮助。我进行了Google搜索,没有发现这个特定的错误。其他的stackoverflow贴子,如在这里找到的:ImportError: Cannot import name X似乎并不相关,因为这涉及Python标准库的一部分,而不是我自己编写的代码和类。

+0

我来自Review,只想说_thank you_是我见过的第一个新用户问题,它的结构良好,经过深入研究,并且具有MCVE([mcve])。 +1 – KernelPanic

回答

2

我在我的代码中遇到了几乎相同的错误,并最终找出哪里出错了。希望它能以某种方式帮助你。

我把我的python脚本命名为“queue.py”,然后运行它,我得到了错误信息。下面跟你的一样:

Traceback (most recent call last): 
File "F:/02_Coding/01_Projects/PyHomeWork/Day23_Process/queue.py", line 19, in <module> 
queue = multiprocessing.Queue() 
File "E:\02_CodingSoftware\02_Installed\Anaconda3\lib\multiprocessing\context.py", line 101, in Queue 
from .queues import Queue 
File "E:\02_CodingSoftware\02_Installed\Anaconda3\lib\multiprocessing\queues.py", line 20, in <module> 
from queue import Empty, Full 
ImportError: cannot import name 'Empty' 

我用下面的方法来创建队列:

if __name__ =="__main__": 
queue = multiprocessing.Queue() 

最后,我注意到,我不应该指定的文件中“queue.py”的名字,它似乎会在解释脚本时导致Python的误导。我重命名脚本后,错误消失了。真是个愚蠢的错误,LoL。

所以我的建议是,也许你可以检查你的文件夹下是否存在名为“queue.py”的脚本,或者任何自定义模块与库中的脚本冲突。

希望你能解决这个问题。最好的