Ubuntu 下迁移 Python 项目:从环境准备到部署上线的完整流程
时间:2026-08-24 | 作者:极客少年 | 阅读:0把Python项目从Windows开发机搬到Ubuntu服务器,听起来简单,但中间有不少坑要填。如果你也正打算做这件事,那下面这份完整的迁移流程可要收好了,从环境准备到部署优化,每一步都捋得清清楚楚。
1. 准备目标Ubuntu环境
到了目标机器上,先把系统打扫干净。更新系统包,装上Python3、pip、venv和git,后面都会用到:
sudo apt update && sudo apt upgrade -y
# 更新系统包
sudo apt install python3 python3-pip python3-venv git -y
# 安装Python3、pip、venv及git
2. 迁移项目代码
代码搬运有两种常用姿势:推荐用git克隆,版本一致还方便回滚;或者用scp/rsync直接把整个目录传过去。
- git克隆(推荐):
git clone <项目仓库URL> /path/to/ubuntu/project_dir - scp传输(本地→远程):
scp -r /local/project/path username@ubuntu_ip:/remote/project/dir
3. 迁移Python虚拟环境
虚拟环境里装满了项目依赖,这块迁移有三种方式,按推荐度排了序。
方法1:通过requirements.txt重新安装(最通用)
先在源机器上把依赖导出来:
source /path/to/source/venv/bin/activate
pip freeze > requirements.txt
然后把生成的 requirements.txt 传到目标机器,创建新环境并装依赖:
cd /path/to/ubuntu/project_dir
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
方法2:打包整个虚拟环境目录(快速但需版本一致)
如果两边的Python版本相同,直接打包整个虚拟环境是最省事的。源机器上压缩,传到目标机器解压,激活就能用。
源机器打包:
tar -czvf venv.tar.gz /path/to/source/venv
scp venv.tar.gz username@ubuntu_ip:/remote/project/dir
目标机器解压并激活:
tar -xzvf venv.tar.gz
source /path/to/ubuntu/project_dir/venv/bin/activate
方法3:离线迁移wheel包(无网络环境适用)
在没有外网的环境下,这个方法最靠谱。先在源机器上下载所有wheel文件,打包传到目标机器,然后离线安装。
源机器下载wheel包:
mkdir packages && pip wheel -w packages -r requirements.txt
tar -czvf packages.tar.gz packages
scp packages.tar.gz username@ubuntu_ip:/remote/project/dir
目标机器安装:
tar -xzvf packages.tar.gz
cd /path/to/ubuntu/project_dir
python3 -m venv venv
source venv/bin/activate
pip install --no-index --find-links=./packages -r requirements.txt
4. 处理系统依赖
还有一层依赖容易被忽视——系统级库。比如psycopg2需要libpq-dev,opencv-python需要libopencv-dev。如果迁移后出现ImportError,先看看是不是缺了这些系统库。常见的一键安装包如下:
sudo apt install libssl-dev libffi-dev libpq-dev libjpeg-dev libpng-dev -y
5. 适配项目配置
- 路径调整:检查代码里有没有硬编码的Windows路径(比如
C:datafile.txt),全部改成Ubuntu下的绝对路径。 - 环境变量:把数据库连接串这类配置从Windows搬到Ubuntu,可以放在
~/.bashrc或项目的.env文件里,然后执行source ~/.bashrc使其生效。 - 权限设置:给项目目录合适的读写权限:
chmod -R 755 /path/to/ubuntu/project_dir
6. 测试项目运行
所有配置到位后,激活虚拟环境,启动项目看看效果:
cd /path/to/ubuntu/project_dir
source venv/bin/activate
python manage.py runserver 0.0.0.0:8000
- 如果是Django项目,记得把
ALLOWED_HOSTS加上服务器IP(开发时可以用['*'],生产环境建议指定具体IP)。 - 如果是Flask项目,确保
FLASK_APP环境变量已设置,比如export FLASK_APP=app.py。
7. 部署优化(可选但推荐)
配置Gunicorn:Django自带的开发服务器扛不住生产流量,换成Gunicorn是标准做法。
pip install gunicorn
gunicorn --workers 3 --bind 0.0.0.0:8000 project.wsgi
配置Nginx反向袋里:前端再加一层Nginx,处理静态文件和负载均衡,配置起来也不复杂。
sudo apt install nginx -y
sudo nano /etc/nginx/sites-a vailable/your_project
添加以下内容(记得替换your_domain_or_ip和project_dir):
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static/ {
alias /path/to/ubuntu/project_dir/static/;
}
}
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-a vailable/your_project /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
常见问题解决
- 依赖安装失败:可以用国内镜像源加速,比如清华源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple - Python版本不兼容:确保目标Ubuntu安装了与源机器一致的Python版本,比如Python 3.8:
sudo apt install python3.8 python3.8-venv -y python3.8 -m venv venv - 缺少系统库:根据错误提示安装对应库,比如
ModuleNotFoundError: No module named '_ssl'就装libssl-dev。
跟着这套流程走下来,Ubuntu上的Python项目基本就能稳定运行了。当然,具体项目可能还有自己的特殊配置,但只要抓住这些关键点,迁移并不会太难。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Ubuntu下使用Git管理Swagger项目的完整指南
- 时间:2026-08-31
-
- Ubuntu下GIMP滤镜使用全指南:从基础操作到批量处理
- 时间:2026-08-31
-
- Ubuntu下使用Telnet进行远程管理的完整指南
- 时间:2026-08-31
-
- Ubuntu中如何查看磁盘I/O对CPU的影响:cpustat替代方案
- 时间:2026-08-31
-
- Ubuntu系统使用cpustat查看多核CPU信息的方法
- 时间:2026-08-31
-
- Ubuntu中Rust日志系统配置指南
- 时间:2026-08-27
-
- Ubuntu下Rust集成第三方库完整指南
- 时间:2026-08-27
-
- Ubuntu下Rust跨平台开发:从环境搭建到自动化测试指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
