2017-03-10 40 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」的腳本,或者任何自定義模塊與庫中的腳本衝突。

希望你能解決這個問題。最好的