Ubuntu Voyager (Ubuntu 12.04 派生) システムで、並列 python (バージョン 1.6.1) を使用して numpy 配列 (numpy バージョン 1.6.1) を使用する関数を実行する python 2.7 スクリプトを実行しようとしています。次のエラーメッセージが表示されます(実際には、まだ長く、12回繰り返されていると思います):
Starting pp with 12 workers
* An error has occured during the module import
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/ppworker.py", line 49, in preprocess
exec module
File "<string>", line 1, in <module>
File "/usr/share/pyshared/numpy/__init__.py", line 137, in <module>
import add_newdocs
File "/usr/share/pyshared/numpy/add_newdocs.py", line 9, in <module>
from numpy.lib import add_newdoc
File "/usr/share/pyshared/numpy/lib/__init__.py", line 4, in <module>
from type_check import *
File "/usr/share/pyshared/numpy/lib/type_check.py", line 8, in <module>
import numpy.core.numeric as _nx
File "/usr/share/pyshared/numpy/core/__init__.py", line 5, in <module>
import multiarray
ImportError: No module named multiarray
A fatal error has occured during the function execution
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/ppworker.py", line 86, in run
__args = pickle.loads(__sargs)
File "/usr/share/pyshared/numpy/__init__.py", line 137, in <module>
import add_newdocs
File "/usr/share/pyshared/numpy/add_newdocs.py", line 9, in <module>
from numpy.lib import add_newdoc
File "/usr/share/pyshared/numpy/lib/__init__.py", line 4, in <module>
from type_check import *
File "/usr/share/pyshared/numpy/lib/type_check.py", line 8, in <module>
import numpy.core.numeric as _nx
File "/usr/share/pyshared/numpy/core/__init__.py", line 5, in <module>
import multiarray
ImportError: No module named multiarray
Exception in thread run_local:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/pymodules/python2.7/pp.py", line 719, in _run_local
job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment
Exception in thread run_local:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/pymodules/python2.7/pp.py", line 719, in _run_local
job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment
他のスレッド (例: Parallel Python での NumPy のインポート) から、おそらく pp と numpy の通信に問題があることがわかったので、これらを試しました:
- pp と numpy の更新
- numpy の再インストール (私は anaconda パッケージを使用しています)
- (スパイダーからではなく)シェルから直接コードを実行する
- マルチアレイ(それ以外の場合は正常にインポートされます)をジョブでワーカーに直接送信します(そして、私は正しい構文を持っていると確信しています...)
しかし、役に立たない。他に提案はありますか?ええと、私の関数を「非数値化」する以外の簡単な回避策はありますか(悲しいことに、それは行列の乗算です)?同じオペレーティング システムのより新しいバージョンを使用しているが、それ以外は同じ Python セットアップを使用している私の同僚は、この問題を抱えていないようですが、時間が問題なので、システムを更新したり、遅いコンピューターをハイジャックしたりすることは、どちらも最善の選択肢ではありません。
必要に応じて、詳細についてお気軽にお問い合わせください。よろしくお願いいたします。