cython lambda1 против ‹лямбда›

Я обнаружил, что на моем ПК определенный метод представлен как <cyfunction <lambda> at 0x06DD02A0>, а на сервере CentOS это <cyfunction lambda1 at 0x1df3050>. Я считаю, что это причина очень неясной ошибки нисходящего потока с другим пакетом.

Почему это не так? В чем его смысл? Могу ли я превратить одно в другое?

Подробности: я вижу это, когда смотрю на pandas.algos._return_false. И ПК, и сервер имеют python 2.7.6, ту же версию pandas (0.14.1) и cython 0.20.2. На ПК Win 7, на сервере CentOS 6.5.


person Korem    schedule 06.09.2014    source источник


Ответы (1)


Pandas поставляются со своими файлами Cython, предварительно скомпилированными для Cython 0.17.2. Вариант <lambda> новее, поэтому, вероятно, он был скомпилирован для версии системы Cython.

Вероятно, вам следует избегать зависимости от этого. Это даже не последовательно! Ошибки, например, имеют тенденцию использовать форму lambdaN даже на Cython 0.20.2!

Если вам нужно зависеть от этого, стандартизируйте версию: либо используйте предварительно скомпилированные исходные коды Pandas везде, либо компилируйте их самостоятельно везде.

Чтобы скомпилировать Pandas с системным Python, запустите python setup.py clean, чтобы удалить предварительно созданные .c файлы.

person Veedrac    schedule 09.09.2014