我正在尝试运行 yocto 构建的 python3-fail2ban 组件,但遇到与PY_SSIZE_T_CLEAN 宏相关的错误。错误消息是PY_SSIZE_T_CLEAN macro must be defined for '#' formats
。
我研究了这个问题,发现在 Python 3.10 C-API 文档https://docs.python.org/3.10/c-api/arg.html#arg-parsing中,提到了,
for all # variants of formats (like s#, y#, etc.), the PY_SSIZE_T_CLEAN macro must be defined before including Python.h. Additionally, it's stated that in Python 3.9 and older, the type of the length argument is Py_ssize_t if the PY_SSIZE_T_CLEAN macro is defined, or int otherwise.
我尝试通过在包含 Python.h 之前定义 PY_SSIZE_T_CLEAN 宏来解决此问题。但问题并没有解决,补丁片段在这里,
+#ifndef PY_SSIZE_T_CLEAN
+#define PY_SSIZE_T_CLEAN 1
+#endif
#include "Python.h"也包含
CFLAGS += "PY_SSIZE_T_CLEAN "
在 python3-fail2ban 组件中。不影响观察后来尝试
CFLAGS += "PY_SSIZE_T_CLEAN "
直接添加python3组件,但是它在yocto python3中产生了很多构建问题,似乎不推荐
我将 Yocto 与特定版本的python3-fail2ban (0.11.2)和python3(10.12)一起使用,并且我已经验证在包含 Python.h 之前定义了必要的 PY_SSIZE_T_CLEAN 宏。
尽管如此,错误仍然存在。有没有人在运行 python3-fail2ban 时遇到类似的问题?是否需要执行任何其他步骤或配置才能正确包含 PY_SSIZE_T_CLEAN 宏?我很感激任何解决此问题的见解或建议。
提前致谢!