используя CVXPY под PyPy3

Я пытаюсь использовать CVXPY под pypy3.6-7.1.1. Но я получаю эту ошибку

    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

Есть какие-нибудь советы о том, как правильно установить CVXPY под pypy3.6? Спасибо!


person Sylvain Chassang    schedule 10.10.2019    source источник


Ответы (2)


Оказывается, оболочки SWIG были созданы с использованием старой версии SWIG (3.0.8). Регенерация оберток должна исправить это. См. эту проблему

person mattip    schedule 13.10.2019

Сообщение об ошибке похоже на эту проблему в TensorFlow, который также использует SWIG. Похоже, это связано с тем, что вызов функции выполняет что-то вроде func(*None)

person mattip    schedule 10.10.2019
comment
Большое спасибо за продолжение. Я начинаю думать, что, вероятно, более эффективно использовать модули ограниченной оптимизации scipy, которые должны быть совместимы с pypy. - person Sylvain Chassang; 11.10.2019