文章内容

2025/12/8 18:48:43,作 者: 黄兵

Python 写的程序应该放在 Ubuntu 24.04 那个目录

Ubuntu 24.04(以及其他 Debian/Ubuntu 系)服务器上部署自己写的 Python 程序,最符合规范(FHS 标准 + Debian packaging 习惯)的目录一般是以下几种之一,取决于你是“系统级服务”、“个人脚本”还是“应用项目”。

最规范的目录放置方式(推荐)

1. /opt/your_app/(最推荐给你自己的 Python 项目)

适合:完整项目、Web 程序、后台服务、守护进程等

Ubuntu 官方建议第三方应用(非系统自带)放在 /opt,保持与系统软件隔离。

例如:

/opt/
    mypythonapp/
        venv/
        main.py
        config/
        logs/

优点:

  • 不与系统软件混在一起

  • 不会因系统升级被覆盖

  • 配合 systemd 非常规范

  • 可以给整个应用独立目录(配置/虚拟环境/日志)

绝大多数公司在 Linux 服务器都将自研服务放在 /opt/

2. /usr/local/bin/(适合单文件 Python 脚本)

适合:可执行的 Python CLI 工具

如果你的程序是一个 Python 脚本,并希望像系统命令一样运行:

sudo cp myscript.py /usr/local/bin/myscript
sudo chmod +x /usr/local/bin/myscript

之后就能直接执行:

myscript

特点:

  • 用户 PATH 默认包含 /usr/local/bin

  • 不会被系统包管理覆盖

  • 专门用于本机管理员安装的软件

3. /usr/local/lib/mypythonapp/(较规范但使用较少)

如果你想更接近 Debian 软件包布局,可用:

/usr/local/lib/mypythonapp/

但这一般只有“需要编译安装的软件”才这样放,所以不推荐给一般 Python 服务。

🟥 不推荐的目录

以下路径虽然“能用”,但不符合规范,不建议部署:

目录 理由
/root/ 只有 root 能访问,不适合服务部署
/home/username/ 对生产环境服务不规范,权限风险大
/var/www/ 只适合 web 静态文件,不适合你的 Python 程序
/usr/bin//bin/ 禁止,系统管理,可能被覆盖

📌 示例: Python 服务正确部署方式

假设你有 main.py 需要后台运行:

① 放置目录
/opt/swift-monitor/
    main.py
    utils/
    requirements.txt
    venv/
    logs/
② 创建虚拟环境
cd /opt/swift-monitor
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
③ 配置 systemd 服务

/etc/systemd/system/swift-monitor.service:

[Unit]
Description=Swift Log Monitor Service
After=network.target

[Service]
WorkingDirectory=/opt/swift-monitor
ExecStart=/opt/swift-monitor/venv/bin/python main.py
Restart=always
User=root

[Install]
WantedBy=multi-user.target

启动:

sudo systemctl daemon-reload
sudo systemctl enable --now swift-monitor

这是行业通用的最规范做法。

✔️ 最终结论(一句话)

如果你的 Python 程序是一个完整的服务,应该放在 /opt/your_app/
如果只是一个工具脚本,放 /usr/local/bin/


其它相关推荐:

1、Python 如何更新软件包

2、如何在 Ubuntu 24.04 安装 Python 虚拟环境

3、Flask 在 Ubuntu 22.04 初始化数据库过程

4、systemctl daemon-reload 的作用是什么?

5、Linux /opt 目录作用

分享到:

发表评论

评论列表