2011-07-14 1 views
-1

В одном из моих модулей я следующий импорт:Почему я получаю ошибку импорта для многопроцессорности, когда мой код вызывается из 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

EDIT Я знаю, что это только тот случай, когда unittest запускается из моей PyCharm IDE. При запуске из командной строки (python3 -m unittest ....) он работает. Это ошибка в среде IDE?

ответ

2

Это может быть потому, что у вас есть каталог ...src/parallelize/backend/ на вашем пути Python (возможно, это рабочий каталог), и Python пытается импортировать Pool из вашего собственного multiprocessing.py там, а не из стандартной библиотеки. Я не знаю, возможно ли это с помощью PyCharm, но попробуйте изменить рабочий каталог на что-то еще.

+0

Да, это похоже на это! –

Смежные вопросы