Yocto/BitBake构建ClickHouse Python库时命名下划线问题排查
解决方案
1. 修正解压目录路径(核心错误)
你之前的S变量指向了错误的目录。原压缩包clickhouse_connect-0.8.18.tar.gz解压后,目录名是**clickhouse_connect-0.8.18**(下划线,不是横杠),所以必须把.inc文件里的S变量改成:
S = "${WORKDIR}/clickhouse_connect-0.8.18"
2. 阻止PyPI自动覆盖SRC_URI
Yocto的Python recipe类会自动根据recipe名称从PyPI拉取包,直接覆盖你手动设置的SRC_URI。要禁用这个行为,在.inc或.bb文件中添加:
# 明确指定PyPI上的真实包名,避免命名解析混乱 PYPI_PACKAGE_NAME = "clickhouse_connect" PYPI_PACKAGE_VERSION = "0.8.18" # 禁用自动PyPI拉取,强制使用自定义SRC_URI SKIP_RECIPE_FETCH = "1"
3. 调试目录结构的实用技巧
作为新手,要确认解压后的实际目录,你可以给recipe加个调试步骤:
在.bb文件中添加这段代码,编译时会输出WORKDIR下的所有内容,帮你确认目录路径:
do_compile_prepend() { echo "=== 查看WORKDIR内容 ===" ls -la ${WORKDIR} }
修正后的完整配置示例
python3-clickhouse-connect_0.8.18.inc
DESCRIPTION = "Clickhouse Integration for Python3" SECTION = "devel/python" LICENSE = "Apache-2.0" # 注意:clickhouse-connect实际采用Apache许可证,不要填CLOSED LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" PYPI_PACKAGE_NAME = "clickhouse_connect" PYPI_PACKAGE_VERSION = "0.8.18" SKIP_RECIPE_FETCH = "1" SRC_URI = "https://files.pythonhosted.org/packages/2a/3d/a06d938d1efb94fdf8a343bbe1dc4ad2458aef08b9c69e0080d695ab24c1/clickhouse_connect-0.8.18.tar.gz" SRC_URI[md5sum] = "5996416b9102e4b18b9e492f886f1aa9" SRC_URI[sha256sum] = "206a33decf2d9ed689d3156ef906dc06f1db7eabfe512e3552e08e9e86b4c73a" S = "${WORKDIR}/clickhouse_connect-0.8.18" # 根据实际需求补充依赖 RDEPENDS_${PN} = "python3-requests python3-setuptools"
python3-clickhouse-connect_0.8.18.bb
require python3-clickhouse-connect_0.8.18.inc inherit setuptools3
内容的提问来源于stack exchange,提问作者Camstillo
相关产品推荐
相关产品推荐

