Есть ли способ установить Pandas с PyPy?

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

К сожалению, я не могу найти способ сделать это... поиск в Интернете дает это и это — два неутешительные результаты, которые говорят, что это невозможно, но им 1-2 года!

эта запись в Твиттере от Ромена Гильбера проблеск надежды показал, что я могу сделать это, используя пакет под названием pymetabiosis. К сожалению, когда я иду, чтобы установить это, я получаю сообщение об ошибке, упомянутое ниже.

Есть идеи, как отладить ошибку или найти другой способ использования Pandas с PyPy?**


Сообщение об ошибке при установке pymetabiosis:

Collecting pymetabiosis
  Using cached pymetabiosis-0.0.1.tar.gz
    Complete output from command python setup.py egg_info:
    pymetabiosis/__pycache__/_cffi__x771a6f66x197b9d2b.c:219:13: warning: initializing 'char **' with an expression of type 'const char **' discards qualifiers in nested pointer types [-Wincompatible-pointer-types-discards-qualifiers]
      { char * *tmp = &p->ml_name; (void)tmp; }
                ^     ~~~~~~~~~~~
    pymetabiosis/__pycache__/_cffi__x771a6f66x197b9d2b.c:220:13: warning: incompatible pointer types initializing 'void **' with an expression of type 'PyCFunction *' (aka 'struct _object *(**)(struct _object *, struct _object *)') [-Wincompatible-pointer-types]
      { void * *tmp = &p->ml_meth; (void)tmp; }
                ^     ~~~~~~~~~~~
    pymetabiosis/__pycache__/_cffi__x771a6f66x197b9d2b.c:222:13: warning: initializing 'char **' with an expression of type 'const char **' discards qualifiers in nested pointer types [-Wincompatible-pointer-types-discards-qualifiers]
      { char * *tmp = &p->ml_doc; (void)tmp; }
                ^     ~~~~~~~~~~
    pymetabiosis/__pycache__/_cffi__x771a6f66x197b9d2b.c:1189:30: warning: incompatible pointer types passing 'PyObject *' (aka 'struct _object *') to parameter of type 'PyCodeObject *' [-Wincompatible-pointer-types]
      { result = PyEval_EvalCode(x0, x1, x2); }
                                 ^~
    //anaconda/include/python2.7/eval.h:10:54: note: passing argument to parameter here
    PyAPI_FUNC(PyObject *) PyEval_EvalCode(PyCodeObject *, PyObject *, PyObject *);
                                                         ^
    pymetabiosis/__pycache__/_cffi__x771a6f66x197b9d2b.c:1857:12: warning: incompatible integer to pointer conversion assigning to 'PyObject *' (aka 'struct _object *') from 'int' [-Wint-conversion]
      { result = PyObject_SetAttr(x0, x1, x2); }
               ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    pymetabiosis/__pycache__/_cffi__x771a6f66x197b9d2b.c:2164:5: warning: incompatible pointer types assigning to 'PyObject *(*)(size_t, ...)' (aka 'struct _object *(*)(unsigned long, ...)') from 'PyObject *(Py_ssize_t, ...)' (aka 'struct _object *(long, ...)') [-Wincompatible-pointer-types]
      i = (PyTuple_Pack);
        ^ ~~~~~~~~~~~~~~
    6 warnings generated.
    ld: warning: directory not found for option '-L//anaconda/lib
    '
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/t4/n42mh55n05sd6s5hgk1dzdz80000gp/T/pip-build-fSTXPd/pymetabiosis/setup.py", line 2, in <module>
        from pymetabiosis.bindings import ffi
      File "pymetabiosis/__init__.py", line 1, in <module>
        from pymetabiosis.module import import_module
      File "pymetabiosis/module.py", line 2, in <module>
        from pymetabiosis.wrapper import MetabiosisWrapper
      File "pymetabiosis/wrapper.py", line 3, in <module>
        from __pypy__ import identity_dict
    ImportError: No module named __pypy__

    ----------------------------------------
Command "python setup.py egg_info" failed with error code -11 in /private/var/folders/t4/n42mh55n05sd6s5hgk1dzdz80000gp/T/pip-build-fSTXPd/pymetabiosis/

person Afflatus    schedule 14.09.2016    source источник
comment
pypy по-прежнему конфликтует с pandas.   -  person kilojoules    schedule 15.09.2016
comment
@kilojoules :( (но спасибо, что сообщили мне)   -  person Afflatus    schedule 15.09.2016
comment
PyDateTime_GET_MONTH(val) = -1; похоже на ошибку, опубликованную на packages.pypy.org/##pandas . Если это все, кто-то должен это исправить. Взносы приветствуются!   -  person Armin Rigo    schedule 15.09.2016
comment
@Afflatus Вы в конце концов установили pandas поверх pypy?   -  person NI6    schedule 01.12.2018
comment
@ NI6 не помню, но сомневаюсь.   -  person Afflatus    schedule 01.12.2018
comment
возвращаясь к этому вопросу после гораздо большего опыта работы с pandas/python, я очень сомневаюсь, что использование PyPy ускорит pandas, так как большинство основных подпрограмм pandas написаны на C и высокопроизводительны при правильном использовании. т.е. маловероятно, что вы увидите значительный прирост производительности при использовании PyPy-версии pandas, поскольку в любом случае это, вероятно, тот же базовый код C. Быстрый Google покажет вам, как быстро правильно использовать Pandas в cpython.   -  person Spcogg the second    schedule 05.11.2020


Ответы (2)


pypy v5.9 начал поддерживать pandas (и numpy)

person NI6    schedule 05.12.2018

Вот что я сделал, предположим, вы используете Conda, но Pip/Venv также должны работать

Создайте новую среду conda

conda create --name pypy_env
conda activate pypy_env

Установите pypy3 с помощью conda

conda install pypy3

Получите Pip для pypy3, используя метод здесь Установите pip на pypy

Установите пакеты для pypy, используя

pypy3 -m pip install pandas
person Spcogg the second    schedule 13.08.2019
comment
Использование его с pip не сработало для меня. Я проверил веб-сайт PyPy и нашел это: поддерживаемые пакеты. Похоже, что Pandas не поддерживается (по крайней мере, без некоторых хакерских обходных путей) - person hhlw; 19.03.2020
comment
К вашему сведению, для тех, кто нашел этот ответ полезным, см. мой комментарий выше по этому вопросу, но TL; DR вы вряд ли получите от этого большую пользу, даже если это сработает. - person Spcogg the second; 05.11.2020