在我的rpmbuild SPEC里边刚好需要用到Google depot_tools的ninja
本来 正常编译pip install ninja就完事了,但是在rpm环境里发现出错了
ModuleNotFoundError: No module named ‘ninia
这个事情很奇怪, 查了下资料, 在rpmbuild 环境里边python -m site 和命令行 发现了不同
rpmbuild里边的sys.path
sys.path = [
‘/root/rpmbuild/BUILD’,
‘/usr/lib64/python39.zip’,
‘/usr/lib64/python3.9’,
‘/usr/lib64/python3.9/lib-dynload’,
‘/usr/lib64/python3.9/site-packages’,
‘/usr/lib/python3.9/site-packages’,
]
命令行里边的sys.path
sys.path = [
‘/root/nginx’,
‘/usr/lib64/python39.zip’,
‘/usr/lib64/python3.9’,
‘/usr/lib64/python3.9/lib-dynload’,
‘/usr/local/lib64/python3.9/site-packages’,
‘/usr/lib64/python3.9/site-packages’,
‘/usr/lib/python3.9/site-packages’,
]
检查python的配置文件可以看到, 识别到RPMBUILD环境, 就会去掉/local/这个路径的包
当然, 解决办法也很简单, 在rpmbuild spec里边加个pip install ninja就行了
这是 rocky linux 9 的python 3.9 以及 Fedora 36 的python 3.10开始引入的一个变化
参考文档:
https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
https://hackmd.io/@python-maint/BkqScKJW5