我正在尝试运行一个 python 2.7 脚本,该脚本使用并行 python(版本 1.6.1)在 Ubuntu Voyager(Ubuntu 12.04 衍生版本)系统上执行使用 numpy 数组(numpy 版本 1.6.1)的函数。它给了我以下错误消息(实际上,它仍然更长,我猜重复了 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 包)
- 直接从 shell 运行代码(而不是从 spyder)
- 将多数组(否则导入就好)直接提交给工作的工人(我确定我有正确的语法......)
但无济于事。你有什么其他的建议?除了 erm 之外还有一个简单的解决方法吗?我的同事使用相同操作系统的更新版本,但使用相同的 python 设置,似乎没有这个问题,但由于时间是一个问题,更新我的系统或劫持他较慢的计算机都不是最好的选择。
如有必要,请随时询问更多详细信息并提前感谢您。