繁体   English   中英

src/greenlet/greenlet.h:42:5:错误:未知类型名称“CFrame”

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

这是什么意思? 我如何解决它?

            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]

版本信息:

  • Ubuntu 20.04
  • python 3.11-开发

外观相关:

看起来版本之间存在问题:

2.0a2(昨天发布)之前的 greenlet 版本不适用于 Python 3.11a6。

然而,似乎2.0.a2 2.0.a2 是在问题出现后的第二天发布的。

谢谢@jamadden

为了让@jmunsch 回答更清楚。 检查您的 pip 版本是否为最新版本。 之后,要安装兼容 py3.11 的 greenlet,请使用:

$ pip3.11 install greenlet==2.0.0a2  

请注意这是一个alpha 版本

我个人在尝试 pip install sqlalchemy 时遇到了这个问题。 我的解决方案是在安装 sqlalchemy 之前先运行上述命令安装 greenlet。 (pip install sqlalchemy 解决安装不兼容版本的greenlet)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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