嘿,由于某些原因,我可以在LiClipse中运行我的应用程序,但不能从命令行运行完全相同的代码。当执行以下方法时,发生运行时错误。
def truncateOperator(self, v, k):
""" Performs the truncate operation for a vector in the TPower
algorithm.
Inputs:
v: The vector to truncate
k: The number of elements of the vector to keep
Outputs:
u: The v vector zeroed apart from the k highest elements.
"""
u = zeros(v.shape[0])
sortedIndices = argsort(abs(v), axis=0)
sortedIndices = fliplr(sortedIndices.T).T
vRestricted = v[sortedIndices[0:k],0]
normV = 0
if isinstance(vRestricted, csc_matrix):
normV = norm(vRestricted.todense())
else:
## Code fails here! ##
normV = norm(vRestricted)
if normV == 0:
return csc_matrix(zeros(v.shape[0]))
a = array(double(vRestricted))/normV
u[sortedIndices[0:k]] = a[0:k, 0]
u = csc_matrix(u)
return u错误是:只有在使用DONT_NEGATE_STRIDES阻止轴的反向迭代时,才能调用RuntimeError:迭代器CreateCompatibleStrides
如果有人能帮我解决这个问题,那就太好了。我希望能够从终端运行它。
谢谢,西奥
发布于 2014-06-12 17:42:00
您已经安装了scipy superpack提供的numpy版本,该版本似乎是使用(或者更确切地说,没有)此DONT_NEGATE_STRIDES编译的。
我会提出两个可能的建议:
site-packages目录中删除完整的*.egg目录。然后,使用pip:sudo pip install numpy再次安装numpy。对之前从scipy superpack获得的其他必需软件包(例如,scipy、pandas等)执行相同的操作。这可能需要一段时间,因为它将在您的系统上编译(即,您没有下载二进制文件)。这需要安装XCode及其命令行工具(主要是gcc/clang)。我自己的首选替代方案是使用homebrew来安装最新的Python版本(因此不使用system python),并使用相应的pip来安装所有必需的包(这避免了像现在这样将东西放在/System和/Library中)。
最后,还有一个不需要删除或安装新东西的变通方法,尽管我不直接推荐它,因为它会在将来以某种方式伤害您:使用PYTHONPATH:设置您的PYTHONPATH在命令行中指向LiClipse包:
$ export PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python这将把LiClipse包路径放在要找到的第一个位置,在scipy superpack包之前。
https://stackoverflow.com/questions/24164343
复制相似问题