You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Linux /usr/local/bin下的Python脚本合理组织依赖?

如何为Linux /usr/local/bin下的Python脚本合理组织依赖?

你这个顾虑完全没问题——把非独立可执行的Python共享模块直接丢/usr/local/bin确实不太符合Linux文件系统的常规规范,毕竟/usr/local/bin是专门给独立可执行程序预留的目录,丢个只能被其他脚本导入的模块进去,不仅会让这个目录变杂乱,也不符合FHS(文件系统层次结构标准)的设计初衷。

这里给你几个更合规、也更易维护的替代方案:

  • 方案一:用系统级Python包目录存放共享模块
    把你的deps.py作为项目专属的Python模块,安装到对应版本的Pythonsite-packages目录下(比如RHEL9默认Python3.9的话,路径是/usr/lib/python3.9/site-packages/)。这样你的各个脚本里直接写import deps就能调用共享代码,完全不用处理路径问题,而且符合Python官方的包管理习惯。
    用RPM打包时,只需要在spec文件的%files段里加上这个模块的路径就行,比如:

    %files
    /usr/local/bin/your-script1.py
    /usr/local/bin/your-script2.py
    /usr/lib/python3.9/site-packages/deps.py
    
  • 方案二:创建项目专属的共享目录
    在/usr/local下专门建一个存放项目共享模块的目录,比如/usr/local/lib/python/your-project-name/,把deps.py放进去。然后在每个需要调用共享代码的脚本开头,加一段路径配置:

    import sys
    sys.path.insert(0, '/usr/local/lib/python/your-project-name')
    import deps
    

    这个方案的好处是不会污染系统级的site-packages目录,所有项目相关的共享代码都集中存放,后续维护、升级也更清晰。RPM打包时,记得先创建这个目录(可以在spec的%install段用mkdir -p命令),再把模块文件复制进去。

  • 额外小提醒
    不管用哪个方案,都要注意文件权限:可执行脚本(/usr/local/bin下的那些)权限设为755,共享模块文件权限设为644,这样既保证脚本能被执行,又避免模块被意外修改。

其实调整之后,脚本的整洁度不会打折扣,反而能避免后续因为目录结构不规范带来的各种小问题,比如脚本路径变化导致import失败、其他工具扫描/usr/local/bin时误把模块当成可执行程序等。

备注:内容来源于stack exchange,提问作者kmalarski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:25:27