在我的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
https://bugzilla.redhat.com/show_bug.cgi?id=1937494
https://github.com/rhinstaller/anaconda/pull/3646