为什么在unittest中调用代码时会出现多进程导入错误?(PyCharm Python 3)
在我的一个模块中,我做了如下的导入:
from multiprocessing import Pool
这个模块在正常调用时运行得很好,但当我在单元测试(unittest)中使用它时,出现了以下错误:
Error
Traceback (most recent call last):
File "/share/work/peter/software/lib/python3.2/unittest/case.py", line 387, in _executeTestPart
function()
File "/home/peter/current/parallelize/src/parallelize/backend/tests.py", line 52, in test_submit_ok_job
backend = self._get_multi_processing_backend()
File "/home/peter/current/parallelize/src/parallelize/backend/tests.py", line 46, in _get_multi_processing_backend
from parallelize.backend.multiprocessing import MultiprocessingBackend
File "/home/peter/current/parallelize/src/parallelize/backend/multiprocessing.py", line 2, in <module>
from multiprocessing import Pool,cpu_count
File "/home/peter/current/parallelize/src/parallelize/backend/multiprocessing.py", line 2, in <module>
from multiprocessing import Pool,cpu_count
ImportError: cannot import name Pool
为什么会这样呢?我使用的是Python 3.2
补充说明 我注意到,这种情况只发生在从我的PyCharm开发环境启动单元测试时。当从命令行(python3 -m unittest ....)运行时,它是可以正常工作的。这是IDE中的一个bug吗?
1 个回答
2
这可能是因为你的Python路径中有一个叫做...src/parallelize/backend/
的文件夹(可能就是你当前的工作目录),所以Python试图从你自己那里的multiprocessing.py
文件中导入Pool
,而不是从标准库中导入。我不太确定在PyCharm中是否可以这样做,但你可以试着把工作目录换成其他地方。