在 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