0
下面简单的脚本提出在python3一个ImportError:不能在python3启动队列
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中导入队列,因为它的名称与多处理模块中的某个文件一致。
但是,如果是python的工作方式,那么我应该避免任何可能的内部库文件名,这是不实际的。
此错误是否归因于我的文件和多处理模块中的某个文件的相同文件名?如果是这样,我如何确保我的文件名与通用编程中任何可能的库文件不同?
'Queue'实际上来自标准库中的'queue'包。 –
这确实是如何蟒蛇工作 - 检查出http://stackoverflow.com/questions/1224741/trying-to-import-module-with-the-same-name-as-a-built-in-module-causes- an-import – daveruinseverything
然后我应该避免任何可能的库的名称。我怎样才能做到这一点? –