Fedora 39中pylint脚本-s选项致包无法导入的疑问
Fedora 39下Pylint无法导入已存在包的问题解析
问题情况
通过Fedora RPM包安装的Pylint出现异常,会错误提示已存在的Python包无法导入。
定位到的问题点
问题出在Pylint启动脚本的shebang行:
#! /usr/bin/python3 -sP
其中-s选项的含义是:
-s Don't add user site directory to sys.path
-s选项的设计逻辑推测
Fedora打包时给Pylint的shebang加上-s,原本的意图应该是让Pylint只使用系统级仓库安装的Python包,避免用户个人~/.local/lib/pythonX.Y/site-packages目录下的包影响系统工具的运行。系统级工具通常被期望依赖都来自官方仓库,这样能保证工具行为的一致性,也避免用户自行安装的包版本冲突导致工具异常。
但这个设计忽略了很多实际场景:比如用户用pip install --user安装的项目依赖,会放在个人site目录下,此时带-s选项的Pylint就找不到这些包,从而抛出导入错误。移除-s后,Python会将用户site目录加入sys.path,Pylint就能正常检测这些包了。
更新
这是一个bug,Fedora官方即将发布修复版本。
内容的提问来源于stack exchange,提问作者VPfB
相关产品推荐
相关产品推荐

