Python 程序在 Ubuntu 系统的完整部署流程

我给你整理一套最简单、最实用、新手零门槛 的 Python 程序部署到 Ubuntu 系统的完整流程,覆盖普通脚本/桌面程序Web 程序(Flask/Django),所有命令直接复制就能用!

一、前期准备:Ubuntu 基础环境配置

Ubuntu 系统默认自带 Python3,我们只需要安装依赖工具即可:

  1. 登录 Ubuntu 服务器/电脑,打开终端
  1. 执行命令更新系统、安装必备工具

|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| Bash # 更新软件源(必做) sudo apt update && sudo apt upgrade -y # 安装 Python3 依赖、虚拟环境工具(Ubuntu20.04/22.04/24.04通用) sudo apt install python3-pip python3-venv -y |

  1. 验证安装成功

|--------------------------------------------------------------|
| Bash python3 --version # 查看Python版本 pip3 --version # 查看pip版本 |

二、上传你的 Python 程序到 Ubuntu

推荐2 种新手最常用的上传方式

方式1:图形化工具(最简单,首选)

  1. 电脑下载 FileZilla
  1. 连接 Ubuntu:
  • 主机:Ubuntu 的 IP 地址
  • 用户名:Ubuntu 登录用户名
  • 密码:Ubuntu 登录密码
  • 端口:22
  1. 直接把本地 Python 代码文件夹拖拽上传 到 Ubuntu(推荐上传到 /home/用户名/ 目录下)

方式2:终端命令上传(无图形界面)

本地电脑终端执行(把文件传到 Ubuntu 的 home 目录):

|-------------------------------------------------------------------------------------------------------------------|
| Bash # 格式:scp -r 本地程序文件夹路径 Ubuntu用户名@UbuntuIP:/home/用户名/ scp -r /本地/我的Python程序 ubuntu@192.168.1.100:/home/ubuntu/ |

三、核心步骤:配置程序运行环境

1. 进入程序目录

假设程序上传到了 /home/ubuntu/my_python_app

|-----------------------|
| Bash cd my_python_app |

2. 创建虚拟环境(必做!隔离依赖,避免冲突)

|----------------------------------------------------------------------------------------------------|
| Bash # 创建虚拟环境(文件夹名env,可自定义) python3 -m venv env # 激活虚拟环境(激活后终端前缀会变成 (env)) source env/bin/activate |

3. 安装程序依赖

✅ 如果你的项目有 requirements.txt(推荐):

|-----------------------------------------------|
| Bash # 安装所有依赖 pip install -r requirements.txt |

✅ 手动生成依赖文件(本地开发时执行,上传到Ubuntu):

|-------------------------------------------------------|
| Bash # 本地电脑终端执行,生成依赖清单 pip freeze > requirements.txt |

四、运行 Python 程序

分两种场景:临时前台运行后台持久运行(关闭终端不退出)

场景1:测试运行(前台,关闭终端程序就停)

|----------------------------------------------------------------------------------------------------------------------------------|
| Bash # 普通Python脚本 python3 main.py # Web程序(Flask/Django) python3 app.py # Flask python3 manage.py runserver 0.0.0.0:5000 # Django |

测试无报错后,按 Ctrl + C 停止,再配置后台运行

场景2:后台持久运行(生产环境必用)

方案1:nohup(最简单,临时部署)

适合临时运行,命令执行后关闭终端也不会停:

|-------------------------------------------------------------------------------------------------------------------------------------------|
| Bash # 普通脚本 nohup python3 main.py > app.log 2>&1 & # Web程序(指定端口) nohup python3 app.py --host=0.0.0.0 --port=5000 > app.log 2>&1 & |

  • 日志会保存到 app.log 文件
  • 查看运行状态:ps -ef | grep python3
  • 停止程序:kill -9 进程ID

方案2:systemd(Ubuntu 自带,生产级!开机自启)

最稳定的方式,推荐长期部署使用:

  1. 创建服务配置文件

|--------------------------------------------------|
| Bash sudo nano /etc/systemd/system/myapp.service |

  1. 粘贴以下配置(修改路径为你自己的程序路径

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| TOML [Unit] Description=My Python App After=network.target [Service] User=ubuntu WorkingDirectory=/home/ubuntu/my_python_app # 程序目录 ExecStart=/home/ubuntu/my_python_app/env/bin/python3 main.py # 虚拟环境+启动命令 Restart=always # 程序崩溃自动重启 [Install] WantedBy=multi-user.target |

  1. 保存退出:按 Ctrl+O → 回车 → Ctrl+X
  1. 启动服务并设置开机自启

|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| Bash # 刷新配置 sudo systemctl daemon-reload # 启动程序 sudo systemctl start myapp # 设置开机自启 sudo systemctl enable myapp # 查看程序运行状态 sudo systemctl status myapp |

  1. 常用命令

|-----------------------------------------------------------------------|
| Bash sudo systemctl stop myapp # 停止 sudo systemctl restart myapp # 重启 |

五、Web 程序额外配置(Flask/Django)

如果你的程序是 Web 服务,需要开放端口才能访问:

  1. 开启 Ubuntu 防火墙

|---------------------------------------------------------------------|
| Bash sudo ufw allow 5000 # 开放你的程序端口 sudo ufw enable sudo ufw status |

  1. 本地浏览器访问:http://Ubuntu的IP:5000

六、常见问题排查

  1. 权限不足 :命令前加 sudo
  1. 依赖安装失败 :确认虚拟环境已激活(前缀有 (env))
  1. 端口被占用 :sudo lsof -i:5000 查看占用进程,kill 掉
  1. 程序报错 :查看日志 cat app.log 或 journalctl -u myapp

总结

  1. 核心流程:配置环境 → 上传程序 → 虚拟环境装依赖 → 后台运行
  1. 新手首选:FileZilla 上传 + systemd 开机自启
  1. 所有命令适配 Ubuntu 全版本,直接复制使用即可
相关推荐
励志的小陈4 小时前
贪吃蛇(C语言实现,API)
c语言·开发语言
kishu_iOS&AI5 小时前
深度学习 —— 损失函数
人工智能·pytorch·python·深度学习·线性回归
Makoto_Kimur5 小时前
java开发面试-AI Coding速成
java·开发语言
好运的阿财5 小时前
OpenClaw工具拆解之canvas+message
人工智能·python·ai编程·openclaw·openclaw工具
laowangpython5 小时前
Gurobi求解器Matlab安装配置教程
开发语言·其他·matlab
wengqidaifeng5 小时前
python启航:1.基础语法知识
开发语言·python
观北海5 小时前
Windows 平台 Python 极简 ORB-SLAM3 Demo,从零实现实时视觉定位
开发语言·python·动态规划
FreakStudio5 小时前
做了个Claude Code CLI 电子宠物:程序员的实体监工代码搭子
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
柴米油盐那点事儿5 小时前
python+mysql+bootstrap条件搜索分页
python·mysql·flask·bootstrap
AC赳赳老秦6 小时前
OpenClaw二次开发实战:编写专属办公自动化技能,适配个性化需求
linux·javascript·人工智能·python·django·测试用例·openclaw