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

 更新时间:2026年04月02日 09:24:54   作者:大明者省  
本文介绍了将Python程序部署到Ubuntu系统的完整流程,包括前期准备、上传程序、配置运行环境以及后台持久运行,还提供了解决常见问题的方法,推荐使用FileZilla上传程序及systemd实现开机自启,需要的朋友可以参考下

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

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

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

  1. 登录 Ubuntu 服务器/电脑,打开终端
  2. 执行命令更新系统、安装必备工具
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:图形化工具(最简单,首选)

  • 电脑下载 FileZilla
  • 连接 Ubuntu:
  • 主机:Ubuntu 的 IP 地址
  • 用户名:Ubuntu 登录用户名
  • 密码:Ubuntu 登录密码
  • 端口:22
  • 直接把本地 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
  • 粘贴以下配置(修改路径为你自己的程序路径
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
  • 保存退出:按 Ctrl+O → 回车 → Ctrl+X
  • 启动服务并设置开机自启
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
  2. 依赖安装失败:确认虚拟环境已激活(前缀有 (env)
  3. 端口被占用sudo lsof -i:5000 查看占用进程,kill 掉
  4. 程序报错:查看日志 cat app.log 或 journalctl -u myapp

总结

  1. 核心流程:配置环境 → 上传程序 → 虚拟环境装依赖 → 后台运行
  2. 新手首选:FileZilla 上传 + systemd 开机自启
  3. 所有命令适配 Ubuntu 全版本,直接复制使用即可

以上就是将Python程序部署到Ubuntu系统的完整流程的详细内容,更多关于Python程序在Ubuntu部署的资料请关注脚本之家其它相关文章!

相关文章

  • 一文带你了解CNN(卷积神经网络)

    一文带你了解CNN(卷积神经网络)

    CNN是神经网络中的一种,它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。本文主要讲解了CNN(卷积神经网络)的基础内容,想了解更多的小伙伴可以看一看这篇文章
    2021-09-09
  • pycharm没有找到manage repositories按钮的解决办法

    pycharm没有找到manage repositories按钮的解决办法

    这篇文章主要给大家介绍了关于pycharm没有找到manage repositories按钮的解决办法,pycharm是用来写python的可视化代码软件,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Python中pymysql 模块的使用详解

    Python中pymysql 模块的使用详解

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
    2019-08-08
  • pytorch中关于distributedsampler函数的使用

    pytorch中关于distributedsampler函数的使用

    这篇文章主要介绍了pytorch中关于distributedsampler函数的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 浅谈anaconda python 版本对应关系

    浅谈anaconda python 版本对应关系

    这篇文章主要介绍了浅谈anaconda python 版本对应关系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Python Pandas常用函数方法总结

    Python Pandas常用函数方法总结

    今天给大家带来的是关于Python的相关知识,文章围绕着Pandas常用函数方法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 数据清洗之如何用一行Python代码去掉文本中的各种符号

    数据清洗之如何用一行Python代码去掉文本中的各种符号

    我们在处理文本的时候往往需要对标点符号进行处理,下面这篇文章主要给大家介绍了关于数据清洗之如何用一行Python代码去掉文本中的各种符号的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Selenium鼠标与键盘事件常用操作方法示例

    Selenium鼠标与键盘事件常用操作方法示例

    这篇文章主要介绍了Selenium鼠标与键盘事件常用操作方法,结合实例形式分析了Selenium鼠标事件与键盘事件常见方法与相关使用技巧,需要的朋友可以参考下
    2018-08-08
  • 浅谈python之新式类

    浅谈python之新式类

    这篇文章主要介绍了浅谈python之新式类,详细的介绍了如何使用新式类和经典类的区别。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • python操作jira添加模块的方法

    python操作jira添加模块的方法

    在开发工作中,Jira通常用作BUG管理和任务跟踪管理等,项目经理,测试人员,开发人员等在Jira上进行提交BUG,提交任务,修改任务进度等操作.本文重点给大家介绍python操作jira添加模块的方法,感兴趣的朋友一起看看吧
    2022-03-03

最新评论