-1

私のモジュールの1つで、次のインポートを行います。

from multiprocessing import Pool

このモジュールは通常どおり呼び出されても正常に動作しますが、単体テストからこれを使用すると、次のエラーが発生します。

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

なぜこれが起こるのですか?Python3.2を使用しています

編集私は、これが私のPyCharmIDEからユニットテストが開始された場合にのみ当てはまることに気づきました。コマンドライン(python3 -m unittest ....)から実行すると、機能します。これはIDEのバグですか?

4

1 に答える 1

2

...src/parallelize/backend/Pythonパスにディレクトリがあり(おそらくそれは作業ディレクトリです)、Pythonが標準ライブラリからではなく、そこにあるPool独自のディレクトリからインポートしようとしていることが原因である可能性があります。multiprocessing.pyPyCharmでそれが可能かどうかはわかりませんが、作業ディレクトリを別のものに変更してみてください。

于 2011-07-14T09:44:39.113 に答える