在 PyPy3 下使用 CVXPY
using CVXPY under PyPy3
我正在尝试在 pypy3.6-7.1.1 下使用 CVXPY。但是我收到了这个错误
def build_lin_op_tree(root_linPy, tmp):
"""
Breadth-first, pre-order traversal on the Python linOp tree
Parameters
-------------
root_linPy: a Python LinOp tree
tmp: an array to keep data from going out of scope
Returns
--------
root_linC: a C++ LinOp tree created through our swig interface
"""
Q = deque()
root_linC = cvxcore.LinOp()
Q.append((root_linPy, root_linC))
while len(Q) > 0:
linPy, linC = Q.popleft()
# Updating the arguments our LinOp
for argPy in linPy.args:
tree = cvxcore.LinOp()
tmp.append(tree)
Q.append((argPy, tree))
> linC.args.push_back(tree)
E TypeError: argument after * must be an iterable, not NoneType
关于如何在 pypy3.6 下正确安装 CVXPY 的任何提示?谢谢!
报错信息类似于TensorFlow中的this issue,同样使用SWIG。这似乎是由于函数调用做了类似 func(*None)
事实证明,SWIG 包装器是使用旧版本的 SWIG (3.0.8) 构建的。重新生成包装纸应该可以修复它。参见 this issue
我正在尝试在 pypy3.6-7.1.1 下使用 CVXPY。但是我收到了这个错误
def build_lin_op_tree(root_linPy, tmp):
"""
Breadth-first, pre-order traversal on the Python linOp tree
Parameters
-------------
root_linPy: a Python LinOp tree
tmp: an array to keep data from going out of scope
Returns
--------
root_linC: a C++ LinOp tree created through our swig interface
"""
Q = deque()
root_linC = cvxcore.LinOp()
Q.append((root_linPy, root_linC))
while len(Q) > 0:
linPy, linC = Q.popleft()
# Updating the arguments our LinOp
for argPy in linPy.args:
tree = cvxcore.LinOp()
tmp.append(tree)
Q.append((argPy, tree))
> linC.args.push_back(tree)
E TypeError: argument after * must be an iterable, not NoneType
关于如何在 pypy3.6 下正确安装 CVXPY 的任何提示?谢谢!
报错信息类似于TensorFlow中的this issue,同样使用SWIG。这似乎是由于函数调用做了类似 func(*None)
事实证明,SWIG 包装器是使用旧版本的 SWIG (3.0.8) 构建的。重新生成包装纸应该可以修复它。参见 this issue