Python .venv 换电脑后失效:不要复制,用依赖定义重建
Python 官方明确将虚拟环境视为可丢弃、不可搬运的目录。本页给出换机前保存证据、目标机重建和验收步骤。
为什么压缩 .venv 通常会失败
虚拟环境基于创建它的基础 Python,内含解释器、脚本入口和指向本机路径的配置。Python 官方文档将 venv 定义为可丢弃、应易于重建、不进版本控制,且不应被视为可搬运或可复制。操作系统、CPU 架构、Python 小版本或项目绝对路径变化时,直接复制更容易留下隐性错误。
1. 旧机器只导出“定义和证据”
python --version
python -m pip --version
python -m pip freeze > requirements-observed.txt
python -m pip check项目已经有 pyproject.toml、锁文件或人工维护的 requirements 时,它们才是主要依赖定义;pip freeze 只是当前安装状态的证据,不应不加审查地取代项目定义。同时记录系统、CPU、Python 版本与必要的外部库,不导出 Token 和密码。
2. 在目标位置新建环境
python -m venv .venv
# Windows PowerShell: ..venvScriptsActivate.ps1
# macOS/Linux: source .venv/bin/activate
python -m pip --version
python -m pip install -r requirements.txt
python -m pip check如果项目使用 Poetry、uv、Pipenv 或 Conda,应使用该项目已经提交的配置与锁文件重建,不要混用多个管理器“补包”。
3. 遇到编译包不要强拷旧二进制
包含 C/C++/Rust 扩展的 Python 包可能与操作系统、架构和 Python ABI 绑定。安装失败时应保存完整错误、核对支持的 Python 版本和编译前置,不应把旧环境里的 site-packages 复制进新环境。
验收标准
sys.executable指向新机器的项目.venv。python -m pip check不报依赖冲突。- 核心测试和一条真实入口命令成功。
.venv没有被 Git 跟踪,删除它后仍能根据已提交定义重建。
官方来源
同一问题集群的免费排障页
按你当前看到的报错选一页,不需要从头阅读全部内容。
Python、JDK 与 JetBrains 项目换电脑:解释器、SDK、.idea 和依赖怎么迁移
区分源代码、团队配置、本机状态、秘密文件和可重建目录;按证据处理 Python venv、PyCharm 解释器、IntelliJ JDK、Git 凭据、Node 与 CMake。
2026 JetBrains 合法免费使用指南:学生许可、非商业使用、试用与商业订阅怎么选
不再寻找失效激活码:按学生/教师、个人非商业、商业工作、课堂部署和短期评估五种用途,核对 JetBrains 当前官方许可路径与安全迁移步骤。
PyCharm 报 No module named,终端却能运行:先对齐解释器和 pip
不要先重复安装依赖。用 sys.executable、python -m pip show、运行配置和工作目录定位 PyCharm 与终端是否使用了不同环境。
IntelliJ 无效的源发行版:区分 Project SDK、Language level 和 Gradle JVM
java -version 正常不等于项目编译链正确。逐层核对 JDK、javac、Project SDK、模块 SDK、语言级别与 Gradle JVM。
CMake 换目录后还指向旧路径:删缓存重配置,不要手改 CMakeCache
项目改路径、换电脑或更换编译器后,旧构建树容易留下绝对路径。用 fresh 配置、Presets 和可重现验收修复。
node_modules 要不要复制到新电脑?用 package-lock 和 npm ci 重建
node_modules 可能包含平台二进制、符号链接和安装脚本结果。保留 package.json、锁文件与项目 npm 配置,在目标机做可复现安装。