python+;pycuda(linux)错误

python+;pycuda(linux)错误,python,pycuda,Python,Pycuda,我通过以下链接安装了python+pycuda(和其他库): 但当我运行测试程序时,它会说: Traceback (most recent call last): File "test_driver.py", line 17, in <module> import pycuda.gpuarray as gpuarray File "/usr/local/lib/python2.7/dist-packages/pycuda-2014.1-py2.7-linux-x86_64.egg/p

我通过以下链接安装了python+pycuda(和其他库):

但当我运行测试程序时,它会说:

Traceback (most recent call last):
File "test_driver.py", line 17, in <module>
import pycuda.gpuarray as gpuarray
File "/usr/local/lib/python2.7/dist-packages/pycuda-2014.1-py2.7-linux-x86_64.egg/pycuda/gpuarray.py", line 3, in <module>
import pycuda.elementwise as elementwise
File "/usr/local/lib/python2.7/dist-packages/pycuda-2014.1-py2.7-linux-x86_64.egg/pycuda/elementwise.py", line 34, in <module>
from pytools import memoize_method
File "/usr/local/lib/python2.7/dist-packages/pytools-2014.3.5-py2.7.egg/pytools/__init__.py", line 5, in <module>
from six.moves import range, zip, intern, input
ImportError: cannot import name intern
回溯(最近一次呼叫最后一次):
文件“test_driver.py”,第17行,在
将pycuda.gpuarray导入为gpuarray
文件“/usr/local/lib/python2.7/dist packages/pycuda-2014.1-py2.7-linux-x86_64.egg/pycuda/gpuarray.py”,第3行,在
将pycuda.elementwise导入为elementwise
文件“/usr/local/lib/python2.7/dist packages/pycuda-2014.1-py2.7-linux-x86_64.egg/pycuda/elementwise.py”,第34行,in
从pytools导入memoize_方法
文件“/usr/local/lib/python2.7/dist-packages/pytools-2014.3.5-py2.7.egg/pytools/__init__;.py”,第5行,in
从六步开始。移动导入范围、zip、实习生、输入
导入错误:无法导入名称实习生
  • 安装了六个。我不知道该怎么办
在OSX系统上,我通过pip升级六个软件包来解决问题。即
$pip install six——升级

我在Ubuntu 14.04上看到了完全相同的问题,但由于存在许多挑剔的依赖性问题,我不想覆盖Ubuntu版本的six。我觉得奇怪的是,错误消息中的pytools版本(2014.3.5)与源代码中的版本不匹配

事实证明,我以前试图通过检查git存储库从源代码安装pycuda。我以前也安装过pip。由于pytools在pycuda的setup.py中被列为一项要求,pip安装了其版本的pytools(2014.3.5)。这就是six和pytools之间不兼容的根源

为了解决这个问题,我使用
pip-remove-pycuda-pytools
卸载了pycuda和pytools,然后使用
apt-get
安装了pycuda,后者随后自动安装了兼容版本的pytools


我只是想把它作为一个替代方案发布,以防其他人喜欢保留默认的Ubuntu版本six。

我在Ubuntu 14.04上也有同样的错误,但上面的提示都不起作用。建议直接编辑导致错误的文件。因此,我编辑了
/usr/local/lib/python2.7/dist-packages/pytools/_u-init__;.py
,并更改了行:

from six.moves import range, zip, intern, input
进入

编辑包含的库文件不是很好,但它绕过了错误

try:
    from six.moves import range, zip, intern, input
except ImportError:
    from six.moves import range, zip, input