在python中的一本平行编程中工作示例时,我在使用多处理队列的代码中遇到以下错误:
File "C:pyDevmultiprocqueue-test.py", line 4, in <module>
queue = multiprocessing.Queue()
File "C:Anaconda3Libmultiprocessingcontext.py", line 100, in Queue
from .queues import Queue
File "C:Anaconda3Libmultiprocessingqueues.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()
我在带有Windows 7的计算机上使用Anaconda 4.1.0运行Python 3.5.1Windows 10,并且在那台机器上正常工作。
以为我的python安装可能存在损坏的文件或其他问题,我尝试重新安装Anaconda,但这无济于事。我执行了Google搜索,但找不到此特定错误。其他stackoverflow帖子,例如此处找到的:Invimperror:无法导入名称x似乎不相关,因为这涉及Python标准库的一部分,而不是我写过的代码和类。
我在代码中遇到了几乎相同的错误,最后弄清楚了哪里出了问题。希望它能以某种方式帮助您。
我将我的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: 2_CodingSoftware 2_InstalledAnaconda3libmultiprocessingcontext.py", line 101, in Queue
from .queues import Queue
File "E: 2_CodingSoftware 2_InstalledAnaconda3libmultiprocessingqueues.py", line 20, in <module>
from queue import Empty, Full
ImportError: cannot import name 'Empty'
我使用以下方法来创建队列:
if __name__ =="__main__":
queue = multiprocessing.Queue()
最后,我注意到我不应该以" queue.py"的名称命名该文件,似乎在解释脚本时会对Python产生误导。在我重命名脚本之后,错误就消失了。多么愚蠢的错误,大声笑。
所以我的建议是,您可以检查在文件夹下是否有一个名为" queue.py"的脚本,或任何自定义模块都会与库中的任何自定义模块发生冲突。
希望您可以解决这个问题。最好的