Почему я получаю ошибку импорта для многопроцессорной обработки, когда мой код вызывается из unittest?(PyCharm Python 3) - PullRequest
0 голосов
/ 14 июля 2011

В одном из моих модулей я делаю следующий импорт:

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?

1 Ответ

2 голосов
/ 14 июля 2011

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

...