- 作者:
- 分类:知识&开发->OS->Linux开发
- 阅读:649
- 点赞:0
- 版权:CC BY-SA 4.0
- 创建:2024-06-19
- 更新:2024-06-19
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/543
原文链接(持续更新):https://neucrack.com/p/543
Traceback (most recent call last):
File "/home/neucrack/.local/bin/cmake", line 3, in <module>
import re
File "/home/neucrack/data/maix/maixcam/LicheeRV-Nano-Build/buildroot/output/per-package/opencv4/host/riscv64-buildroot-linux-musl/sysroot/usr/lib/python3.11/re/__init__.py", line 125, in <module>
from . import _compiler, _parser
File "/home/neucrack/data/maix/maixcam/LicheeRV-Nano-Build/buildroot/output/per-package/opencv4/host/riscv64-buildroot-linux-musl/sysroot/usr/lib/python3.11/re/_compiler.py", line 24, in <module>
assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch
可以看到 home/neucrack/.local/bin/cmake 这里是一个 python 脚本,
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from cmake import cmake
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(cmake())
执行它时会使用这个脚本头写的#!/usr/bin/python3
去执行,而不是交叉编译时临时设置的 python 去执行,而由于交叉编译时设置了编译出来的host python库的路径,这里 import re 时实际导入的编译出来的host库中re库,和本机安装的 re版本是不同的,所以就会报错。
解决方法是不用 pip install cmake , 使用 apt 安装的二进制可执行 cmake 程序就好了,或者修改这个 cmake 脚本,执行#!python
执行(未测试,应该可行)。