Ubuntu下迁移Python项目的完整流程
在目标Ubuntu机器上,首先确保系统包是最新的,并安装Python基础环境及必要工具:
sudo apt update && sudo apt upgrade -y # 更新系统包
sudo apt install python3 python3-pip python3-venv git -y # 安装Python3、pip、venv及git
通过git克隆项目仓库(推荐,保持代码版本一致性),或使用scp/rsync传输本地项目文件:
git clone <项目仓库URL> /path/to/ubuntu/project_dir
scp -r /local/project/path username@ubuntu_ip:/remote/project/dir
虚拟环境包含项目依赖,迁移方式有三种(按推荐顺序):
requirements.txt重新安装(最通用)source /path/to/source/venv/bin/activate # 激活源虚拟环境
pip freeze > requirements.txt # 导出依赖列表
cd /path/to/ubuntu/project_dir
python3 -m venv venv # 创建新虚拟环境(避免污染全局环境)
source venv/bin/activate # 激活新环境
pip install -r requirements.txt # 安装所有依赖
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 # 激活环境
mkdir packages && pip wheel -w packages -r requirements.txt # 下载所有依赖的wheel文件
tar -czvf packages.tar.gz packages # 压缩wheel目录
scp packages.tar.gz username@ubuntu_ip:/remote/project/dir
tar -xzvf packages.tar.gz # 解压wheel目录
cd /path/to/ubuntu/project_dir
python3 -m venv venv
source venv/bin/activate
pip install --no-index --find-links=./packages -r requirements.txt # 离线安装
某些Python包需要系统级库支持(如psycopg2需要libpq-dev,opencv-python需要libopencv-dev),若迁移后出现ImportError,需安装对应系统库:
sudo apt install libssl-dev libffi-dev libpq-dev libjpeg-dev libpng-dev -y # 常见依赖
C:\data\file.txt)为Ubuntu路径(如/home/ubuntu/project/data/file.txt)。~/.bashrc或项目.env文件中,并通过source ~/.bashrc加载。chmod -R 755 /path/to/ubuntu/project_dir # 调整目录权限
在目标Ubuntu环境中,激活虚拟环境并运行项目,验证功能是否正常:
cd /path/to/ubuntu/project_dir
source venv/bin/activate # 激活虚拟环境
python manage.py runserver 0.0.0.0:8000 # Django示例(根据项目类型调整命令)
ALLOWED_HOSTS是否包含服务器IP(如ALLOWED_HOSTS = ['*'],生产环境建议指定具体IP)。FLASK_APP环境变量已设置(如export FLASK_APP=app.py)。pip install gunicorn
gunicorn --workers 3 --bind 0.0.0.0:8000 project.wsgi # 替换project为你的项目名
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/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; # 转发到Gunicorn端口
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-available/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
sudo apt install python3.8 python3.8-venv -y # 安装指定版本
python3.8 -m venv venv # 使用指定版本创建虚拟环境
ModuleNotFoundError: No module named '_ssl'则安装libssl-dev)。通过以上步骤,即可完成Ubuntu环境下Python项目的完整迁移,并确保项目在新环境中稳定运行。