- 本机运行
- 迁移到其他电脑
- 位数不同的处理
- 在线 / 离线 两种方式
- uv 是否必须安装的边界
全文按“操作流程 + 规则说明”来写,适合长期复用。
Python 项目跨电脑运行与迁移流程(含位数差异、在线与离线)
前提条件
- 项目目录中已经存在
requirements.txt - 项目通过
python main.py或类似方式启动 - 使用 Windows 环境为例
- 工具以
uv + venv + pip为主
一、本机首次运行流程(标准做法)
1. 安装 Python 解释器
推荐统一 Python 大版本,例如:
uv python install 3.11.6
说明:
- 不必锁死到某个补丁位
- 大版本一致即可
2. 创建虚拟环境
在项目根目录:
uv venv --python 3.11.6
激活环境:
.venv\Scripts\activate
确认解释器来自虚拟环境:
where python
python -V
3. 补齐基础构建工具(关键步骤)
python -m ensurepip --upgrade
python -m pip install --upgrade pip setuptools wheel
说明:
- uv 创建的是精简环境
- wheel 缺失会导致 C 扩展包构建失败
- 这是 Windows 下的必做步骤
4. 安装依赖
python -m pip install -r requirements.txt
若失败:
- 检查包名是否真实存在于 PyPI
- 检查是否触发源码编译
- 记录失败包名,后续迁移会用到
5. 本机运行验证
python main.py
确认功能可用后再进入迁移阶段。
二、迁移的基本原则(必须先理解)
原则 1
永远不复制 .venv 到另一台电脑
- venv 内含路径、架构、动态库绑定
- 只能在创建它的机器上可靠运行
原则 2
迁移的对象是代码 + 依赖声明,不是环境
迁移内容:
- 项目源码
requirements.txt- 可选
.python-version
原则 3
Python 位数优先级高于 Python 版本
- 3.11.6 64 位
- 3.11.6 32 位
对依赖来说是两个完全不同的平台。
三、位数不同的处理逻辑(核心)
1. 64 位 → 64 位
- 正常迁移
- 风险最低
2. 64 位 → 32 位
这是硬边界场景:
- 所有带二进制扩展的包必须有 win32 支持
- 必须在 32 位环境中重新安装依赖
- 不能复用 64 位任何构建产物
四、在线迁移流程(目标机可联网)
适用场景
- 目标机能访问 PyPI
- 允许重新下载依赖
步骤 1:拷贝项目代码
拷贝:
- 项目源码
requirements.txt
不拷贝:
.venv
步骤 2:在目标机安装 Python
必须与目标机位数一致:
- 64 位系统 → 64 位 Python
- 32 位系统 → 32 位 Python
确认位数:
python -c "import struct; print(struct.calcsize('P') * 8)"
步骤 3:创建虚拟环境
uv venv --python 3.11.6
.venv\Scripts\activate
步骤 4:补齐工具链
python -m ensurepip --upgrade
python -m pip install --upgrade pip setuptools wheel
步骤 5:安装依赖并运行
python -m pip install -r requirements.txt
python main.py
五、离线迁移流程(目标机无互联网)
这是最容易踩坑的部分。
核心结论
离线部署必须在“同位数、可联网的中转机”上准备依赖。
- 64 位中转机只能给 64 位用
- 32 位中转机才能给 32 位用
阶段一:准备中转机
要求:
- 操作系统位数 = 目标机
- Python 版本 = 目标机
- 可联网
阶段二:下载依赖(不安装)
在中转机项目目录:
mkdir offline_pkgs
python -m pip download -r requirements.txt -d offline_pkgs
这一步的意义:
- 提前验证是否有可用 wheel
- 提前暴露 32 位不支持的问题
阶段三:模拟离线安装验证
python -m pip install --no-index --find-links=offline_pkgs -r requirements.txt
能成功,说明离线部署可行。 失败,说明该项目不适合该位数环境。
阶段四:拷贝到目标离线机
拷贝内容:
- 项目源码
requirements.txtoffline_pkgs/
阶段五:目标机离线安装
uv venv --python 3.11.6
.venv\Scripts\activate
python -m ensurepip --upgrade
python -m pip install --upgrade pip setuptools wheel
python -m pip install --no-index --find-links=offline_pkgs -r requirements.txt
python main.py
六、uv 是否必须安装
结论
- 运行阶段不需要 uv
- 创建 / 重建环境阶段才需要 uv
说明:
- 虚拟环境激活后
- 使用的是
.venv内的python - uv 不参与运行
如果目标机已经有 Python:
- 可以不用 uv
- 用
python -m venv也能完成部署
七、工程经验总结
- 迁移的是代码和依赖声明
- 环境必须在目标机重建
- 位数不同是物理边界
- 离线部署的难点在于“是否存在对应架构的 wheel”
- uv 是开发工具,不是运行时依赖
一句话版本:
Python 项目迁移的本质不是拷贝环境,而是重建环境。