將Python程序部署到Ubuntu系統(tǒng)的完整流程
我給你整理一套最簡(jiǎn)單、最實(shí)用、新手零門檻的 Python 程序部署到 Ubuntu 系統(tǒng)的完整流程,覆蓋普通腳本/桌面程序和Web 程序(Flask/Django),所有命令直接復(fù)制就能用!
一、前期準(zhǔn)備:Ubuntu 基礎(chǔ)環(huán)境配置
Ubuntu 系統(tǒng)默認(rèn)自帶 Python3,我們只需要安裝依賴工具即可:
- 登錄 Ubuntu 服務(wù)器/電腦,打開終端
- 執(zhí)行命令更新系統(tǒng)、安裝必備工具
Bash # 更新軟件源(必做) sudo apt update && sudo apt upgrade -y # 安裝 Python3 依賴、虛擬環(huán)境工具(Ubuntu20.04/22.04/24.04通用) sudo apt install python3-pip python3-venv -y
- 驗(yàn)證安裝成功
Bash python3 --version ?# 查看Python版本 pip3 --version ????# 查看pip版本
二、上傳你的 Python 程序到 Ubuntu
推薦2 種新手最常用的上傳方式:
方式1:圖形化工具(最簡(jiǎn)單,首選)
- 電腦下載 FileZilla
- 連接 Ubuntu:
- 主機(jī):Ubuntu 的 IP 地址
- 用戶名:Ubuntu 登錄用戶名
- 密碼:Ubuntu 登錄密碼
- 端口:22
- 直接把本地 Python 代碼文件夾拖拽上傳到 Ubuntu(推薦上傳到 /home/用戶名/ 目錄下)
方式2:終端命令上傳(無(wú)圖形界面)
本地電腦終端執(zhí)行(把文件傳到 Ubuntu 的 home 目錄):
Bash # 格式:scp -r 本地程序文件夾路徑 ?Ubuntu用戶名@UbuntuIP:/home/用戶名/ scp -r /本地/我的Python程序 ubuntu@192.168.1.100:/home/ubuntu/
三、核心步驟:配置程序運(yùn)行環(huán)境
1. 進(jìn)入程序目錄
假設(shè)程序上傳到了 /home/ubuntu/my_python_app
Bash cd my_python_app
2. 創(chuàng)建虛擬環(huán)境(必做!隔離依賴,避免沖突)
Bash # 創(chuàng)建虛擬環(huán)境(文件夾名env,可自定義) python3 -m venv env # 激活虛擬環(huán)境(激活后終端前綴會(huì)變成 (env)) source env/bin/activate
3. 安裝程序依賴
如果你的項(xiàng)目有 requirements.txt(推薦):
Bash # 安裝所有依賴 pip install -r requirements.txt
手動(dòng)生成依賴文件(本地開發(fā)時(shí)執(zhí)行,上傳到Ubuntu):
Bash # 本地電腦終端執(zhí)行,生成依賴清單 pip freeze > requirements.txt
四、運(yùn)行 Python 程序
分兩種場(chǎng)景:臨時(shí)前臺(tái)運(yùn)行、后臺(tái)持久運(yùn)行(關(guān)閉終端不退出)
場(chǎng)景1:測(cè)試運(yùn)行(前臺(tái),關(guān)閉終端程序就停)
Bash # 普通Python腳本 python3 main.py # Web程序(Flask/Django) python3 app.py ?# Flask python3 manage.py runserver 0.0.0.0:5000 ?# Django
測(cè)試無(wú)報(bào)錯(cuò)后,按 Ctrl + C 停止,再配置后臺(tái)運(yùn)行
場(chǎng)景2:后臺(tái)持久運(yùn)行(生產(chǎn)環(huán)境必用)
方案1:nohup(最簡(jiǎn)單,臨時(shí)部署)
適合臨時(shí)運(yùn)行,命令執(zhí)行后關(guān)閉終端也不會(huì)停:
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 &
- 日志會(huì)保存到 app.log 文件
- 查看運(yùn)行狀態(tài):ps -ef | grep python3
- 停止程序:kill -9 進(jìn)程ID
方案2:systemd(Ubuntu 自帶,生產(chǎn)級(jí)!開機(jī)自啟)
最穩(wěn)定的方式,推薦長(zhǎng)期部署使用:
- 創(chuàng)建服務(wù)配置文件
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 ?# 虛擬環(huán)境+啟動(dòng)命令 Restart=always ?# 程序崩潰自動(dòng)重啟 [Install] WantedBy=multi-user.target
- 保存退出:按 Ctrl+O → 回車 → Ctrl+X
- 啟動(dòng)服務(wù)并設(shè)置開機(jī)自啟
Bash # 刷新配置 sudo systemctl daemon-reload # 啟動(dòng)程序 sudo systemctl start myapp # 設(shè)置開機(jī)自啟 sudo systemctl enable myapp # 查看程序運(yùn)行狀態(tài) sudo systemctl status myapp
- 常用命令
Bash sudo systemctl stop myapp ??# 停止 sudo systemctl restart myapp # 重啟
五、Web 程序額外配置(Flask/Django)
如果你的程序是 Web 服務(wù),需要開放端口才能訪問(wèn):
- 開啟 Ubuntu 防火墻
Bash sudo ufw allow 5000 ?# 開放你的程序端口 sudo ufw enable sudo ufw status
- 本地瀏覽器訪問(wèn):http://Ubuntu的IP:5000
六、常見問(wèn)題排查
- 權(quán)限不足:命令前加 sudo
- 依賴安裝失敗:確認(rèn)虛擬環(huán)境已激活(前綴有 (env))
- 端口被占用:sudo lsof -i:5000 查看占用進(jìn)程,kill 掉
- 程序報(bào)錯(cuò):查看日志 cat app.log 或 journalctl -u myapp
總結(jié)
- 核心流程:配置環(huán)境 → 上傳程序 → 虛擬環(huán)境裝依賴 → 后臺(tái)運(yùn)行
- 新手首選:FileZilla 上傳 + systemd 開機(jī)自啟
- 所有命令適配 Ubuntu 全版本,直接復(fù)制使用即可
以上就是將Python程序部署到Ubuntu系統(tǒng)的完整流程的詳細(xì)內(nèi)容,更多關(guān)于Python程序在Ubuntu部署的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
keras的三種模型實(shí)現(xiàn)與區(qū)別說(shuō)明
這篇文章主要介紹了keras的三種模型實(shí)現(xiàn)與區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
python批量轉(zhuǎn)換word文檔為pdf文件的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用python編寫一個(gè)批量轉(zhuǎn)換word文檔為pdf文件的工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-12-12
python 多進(jìn)程共享全局變量之Manager()詳解
這篇文章主要介紹了python 多進(jìn)程共享全局變量之Manager()詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)找到同名文件并復(fù)制到其他文件夾中
這篇文章主要為大家介紹了如何基于Python語(yǔ)言,實(shí)現(xiàn)依據(jù)某一文件夾中大量文件的名稱復(fù)制另一文件夾中的同名文件,文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考一下2023-05-05
Qt Quick QML-500行代碼實(shí)現(xiàn)合成大西瓜游戲
合成大西瓜游戲是前段時(shí)間比較火的小游戲,最近小編閑來(lái)無(wú)事,通過(guò)研究小球碰撞原理親自寫碰撞算法實(shí)現(xiàn)一個(gè)合成大西瓜游戲,下面小編把我的實(shí)現(xiàn)思路及核心代碼分析出來(lái),供大家參考2021-05-05
Python微信企業(yè)號(hào)開發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動(dòng)返回消息示例
這篇文章主要介紹了Python微信企業(yè)號(hào)開發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動(dòng)返回消息的方法,涉及Python微信企業(yè)號(hào)回調(diào)模式消息響應(yīng)機(jī)制相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
python?通過(guò)dict(zip)和{}的方式構(gòu)造字典的方法
在python中,通常通過(guò)dict和zip組合來(lái)構(gòu)建鍵值對(duì),這篇文章主要介紹了python?通過(guò)dict(zip)和{}的方式構(gòu)造字典的方法,需要的朋友可以參考下2022-07-07
Python操作dict時(shí)避免出現(xiàn)KeyError的幾種解決方法
這篇文章主要介紹了Python操作dict時(shí)避免出現(xiàn)KeyError的幾種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
django 通過(guò)url實(shí)現(xiàn)簡(jiǎn)單的權(quán)限控制的例子
今天小編就為大家分享一篇django 通過(guò)url實(shí)現(xiàn)簡(jiǎn)單的權(quán)限控制的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08

