简体   繁体   中英

src/greenlet/greenlet.h:42:5: error: unknown type name ‘CFrame’

What does this mean? How do I fix it?

            gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/jm/pycharm_projects/circus/venv_3_11_dev/include -I/home/jm/.pyenv/versions/3.11-dev/include/python3.11 -c src/greenlet/greenlet.c -o build/temp.linux-x86_64-3.11/src/greenlet/greenlet.o
            In file included from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.h:42:5: error: unknown type name ‘CFrame’
               42 |     CFrame* cframe;
                  |     ^~~~~~
            src/greenlet/greenlet.c: In function ‘green_clear_exc’:
            src/greenlet/greenlet.c:173:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
              173 |     g->exc_state.exc_type = NULL;
                  |                 ^
            src/greenlet/greenlet.c:175:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
              175 |     g->exc_state.exc_traceback = NULL;
                  |                 ^
            src/greenlet/greenlet.c: In function ‘g_switchstack’:
            src/greenlet/greenlet.c:528:44: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
              528 |         current->recursion_depth = tstate->recursion_depth;
                  |                                            ^~~~~~~~~~~~~~~
                  |                                            recursion_limit
            src/greenlet/greenlet.c:529:38: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
              529 |         current->top_frame = tstate->frame;
                  |                                      ^~~~~
                  |                                      cframe
            src/greenlet/greenlet.c:552:25: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} [-Wincompatible-pointer-types]
              552 |         current->cframe = tstate->cframe;
                  |                         ^
            src/greenlet/greenlet.c:577:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
              577 |         tstate->recursion_depth = target->recursion_depth;
                  |                 ^~~~~~~~~~~~~~~
                  |                 recursion_limit
            src/greenlet/greenlet.c:578:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
              578 |         tstate->frame = target->top_frame;
                  |                 ^~~~~
                  |                 cframe
            src/greenlet/greenlet.c:601:24: warning: assignment to ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} from incompatible pointer type ‘int *’ [-Wincompatible-pointer-types]
              601 |         tstate->cframe = target->cframe;
                  |                        ^
            src/greenlet/greenlet.c: In function ‘g_initialstub’:
            src/greenlet/greenlet.c:813:5: error: unknown type name ‘CFrame’
              813 |     CFrame trace_info;
                  |     ^~~~~~
            src/greenlet/greenlet.c:857:18: error: incompatible types when assigning to type ‘int’ from type ‘_PyCFrame’ {aka ‘struct _PyCFrame’}
              857 |     trace_info = *PyThreadState_GET()->cframe;
                  |                  ^
            src/greenlet/greenlet.c:864:17: error: request for member ‘previous’ in something not a structure or union
              864 |     self->cframe->previous = &PyThreadState_GET()->root_cframe;
                  |                 ^~
            src/greenlet/greenlet.c:878:50: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
              878 |     self->recursion_depth = PyThreadState_GET()->recursion_depth;
                  |                                                  ^~~~~~~~~~~~~~~
                  |                                                  recursion_limit
            src/greenlet/greenlet.c: In function ‘green_new’:
            src/greenlet/greenlet.c:1018:34: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} [-Wincompatible-pointer-types]
             1018 |         ((PyGreenlet*)o)->cframe = &PyThreadState_GET()->root_cframe;
                  |                                  ^
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:45,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c: In function ‘green_traverse’:
            src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1124 |     Py_VISIT(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
              199 |         if (op) {                                                       \
                  |             ^~
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:44,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1124 |     Py_VISIT(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1124:5: note: in expansion of macro ‘Py_VISIT’
             1124 |     Py_VISIT(self->exc_state.exc_type);
                  |     ^~~~~~~~
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:45,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1126 |     Py_VISIT(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
              199 |         if (op) {                                                       \
                  |             ^~
            In file included from /home/jm/.pyenv/versions/3.11-dev/include/python3.11/Python.h:44,
                             from src/greenlet/greenlet.h:8,
                             from src/greenlet/greenlet.c:11:
            src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1126 |     Py_VISIT(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1126:5: note: in expansion of macro ‘Py_VISIT’
             1126 |     Py_VISIT(self->exc_state.exc_traceback);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c: In function ‘green_clear’:
            src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1162 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1162:5: note: in expansion of macro ‘Py_CLEAR’
             1162 |     Py_CLEAR(self->exc_state.exc_type);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1162 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1164 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1164:5: note: in expansion of macro ‘Py_CLEAR’
             1164 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1164 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c: In function ‘green_dealloc’:
            src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1256 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1256:5: note: in expansion of macro ‘Py_CLEAR’
             1256 |     Py_CLEAR(self->exc_state.exc_type);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
             1256 |     Py_CLEAR(self->exc_state.exc_type);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1258 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:107:41: note: in definition of macro ‘_PyObject_CAST’
              107 | #define _PyObject_CAST(op) ((PyObject*)(op))
                  |                                         ^~
            src/greenlet/greenlet.c:1258:5: note: in expansion of macro ‘Py_CLEAR’
             1258 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |     ^~~~~~~~
            src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
             1258 |     Py_CLEAR(self->exc_state.exc_traceback);
                  |                             ^
            /home/jm/.pyenv/versions/3.11-dev/include/python3.11/object.h:561:14: note: in definition of macro ‘Py_CLEAR’
              561 |             (op) = NULL;                        \
                  |              ^~
            src/greenlet/greenlet.c: In function ‘PyGreenlet_New’:
            src/greenlet/greenlet.c:1777:15: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ {aka ‘struct _PyCFrame *’} [-Wincompatible-pointer-types]
             1777 |     g->cframe = &PyThreadState_GET()->root_cframe;
                  |               ^
            error: command '/usr/bin/gcc' failed with exit code 1
            [end of output]

Version info:

  • ubuntu 20.04
  • python 3.11-dev

Looks related:

Looks like there was an issue between versions:

Versions of greenlet prior to 2.0a2 (released yesterday) do not work with Python 3.11a6.

However it also appears that 2.0.a2 of greenlet was released the day after surfacing the issue.

Thanks @jamadden

To make @jmunsch answer more clear. Check that your pip version is the latest possible. After that, to install a py3.11-compatible greenlet, use:

$ pip3.11 install greenlet==2.0.0a2  

Do note this is an alpha version .

I personally ran into this problem while trying to pip install sqlalchemy. The solution for me was to run the above command to install greenlet first before installing sqlalchemy. (pip install sqlalchemy resolves to install the incompatible versions of greenlet).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM