builtins.ImportError:无法导入名称“空”

Pat*_*k R 7 import multiprocessing

在处理 Python 并行编程一书中的示例时,我在使用多处理队列的代码中遇到了以下错误:

    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'
Run Code Online (Sandbox Code Playgroud)

经过一些实验,我确定生成此错误所需的只是以下代码(这是上面错误消息中提到的整个 queue-test.py 文件)。

import multiprocessing

if __name__ == "__main__":
    queue = multiprocessing.Queue()
Run Code Online (Sandbox Code Playgroud)

我在一台装有 Anaconda 4.1.0 的机器上运行 Python 3.5.1 和 Windows 7。我已经将上面的代码和书中的示例移植到另一台装有 Python 2.7.11 和 Anaconda 2.5.0、Windows 10 和它在那台机器上工作正常。

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

小智 7

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

我将我的 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'
Run Code Online (Sandbox Code Playgroud)

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

if __name__ =="__main__":
queue = multiprocessing.Queue()
Run Code Online (Sandbox Code Playgroud)

最后,我注意到我不应该将文件命名为“queue.py”,这似乎会在解释脚本时对 python 造成误导。在我重命名脚本后,错误消失了。多么愚蠢的错误,大声笑。

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

希望你能解决问题。最好的事物