无法在python3中启动队列

Chong Wang

以下简单脚本在python3中引发了ImportError:

from multiprocessing import Queue
queue = Queue()
print("OK")

重现此错误的关键是对该文件命名queue.py,然后出现以下消息:

Traceback (most recent call last):
File "queue.py", line 3, in <module>
    queue = Queue()
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/context.py", line 100, in Queue
    from .queues import Queue
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/queues.py", line 20, in <module>
    from queue import Empty, Full
File "/home/wangc/temp/queue.py", line 3, in <module>
    queue = Queue()
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/context.py", line 100, in Queue
    from .queues import Queue
ImportError: cannot import name 'Queue'

如果文件名为queueue.py,则一切正常。

我认为这是因为多处理模块正在尝试从我的queue.py导入Queue,因为其名称与多处理模块中的某些文件一致。

但是,如果这是python的工作方式,那么我应该避免使用任何可能的内部库的文件名,这不切实际。

此错误是否归因于我的文件和多处理模块中某些文件的文件名相同?如果是的话,在常规编程中,如何确保我的文件名与任何可能的库文件不同?

库什布

您不能使用与要导入的模块相同的文件名。阅读模块以获得更多说明使用该模块,任何未经修饰的程序包名称将始终引用顶级程序包。然后,您将需要使用相对导入来访问您自己的包。您将要阅读有关绝对进口和相对进口的文章,该文章解决了这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章