Yocto构建的python3-fail2ban运行报错:PY_SSIZE_T_CLEAN macro must be defined for '#' formats 求助
Yocto构建的python3-fail2ban运行报错:PY_SSIZE_T_CLEAN macro must be defined for '#' formats 求助
各位大佬好,我最近在折腾Yocto构建的python3-fail2ban组件,遇到了一个棘手的问题,折腾好久都没解决,特意来求助!
我当前的环境是:Yocto构建的python3-fail2ban版本为0.11.2,搭配的Python版本是3.10.12。运行的时候一直弹出这个错误:
PY_SSIZE_T_CLEAN macro must be defined for '#' formats
我查了Python 3.10的C API相关说明,了解到:
对于所有带
#的格式变体(比如s#、y#等),必须在包含Python.h之前定义PY_SSIZE_T_CLEAN宏。另外在Python 3.9及更早版本中,这个宏的定义会决定长度参数的类型——定义了就是Py_ssize_t,没定义就是int。
针对这个问题,我已经尝试了几种方法,但都没奏效:
- 给相关代码打补丁,在引入
Python.h前强制定义宏,补丁代码片段如下:
但应用补丁后运行,错误依然存在。#ifndef PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN 1 #endif #include "Python.h" - 在python3-fail2ban组件的配方里添加
CFLAGS += "PY_SSIZE_T_CLEAN ",对报错情况没有任何改善。 - 尝试直接在python3组件的配方里加这个CFLAGS配置,结果导致Yocto构建Python3时出现大量错误,显然这种方式不可行。
现在我已经确认PY_SSIZE_T_CLEAN宏确实是在Python.h之前定义的,但错误还是顽固地出现。有没有大佬遇到过类似的问题?除了我试过的这些操作,还有什么其他配置或者步骤能彻底解决这个问题吗?非常感谢大家的建议和思路!
备注:内容来源于stack exchange,提问作者zaheerk
相关产品推荐
相关产品推荐

