🚀 跨机器科研开发环境配置手册 (A/B 机同步版)
本手册记录了基于 Scoop (软件管理) + OneDrive/Git (同步盘) + Local (本地大文件) 的混合开发环境配置流程。
该架构专为 AI 研究(Java 与 Python )设计,解决了跨机器切换时环境路径不一致、依赖冗余等痛点。
📂 1. 核心目录架构
为了平衡“同步速度”与“运行性能”,环境被拆分为两个核心部分:
| 目录名称 |
物理路径示例 |
存储内容 |
同步策略 |
| Sync(可动) |
D:\Workspace\Sync |
Scoop 软件本体、代码项目、环境修复脚本 |
全量同步 (OneDrive) |
| Local(写死) |
D:\Workspace\Local |
Maven 本地库 (.m2)、Conda 虚拟环境、数据集 |
不参与同步 (每台机器独立) |
| 软件工具路径 |
D:\Workbench\ |
idea、pycharm等 |
不参与同步 (每台机器独立) |
🛠️ 2. 环境初始化步骤 (A 机)
第一步:安装并迁移 Scoop
- 在 PowerShell 中通过环境变量设置,将 Scoop 的安装位置指定到
Sync 目录下。
- 安装核心科研工具链:git,maven,miniconda3,openjdk17
D:\Workspace\Local写死的路径地址,D:\Workspace\Local\.m2\repository为maven仓库地址,以及python虚拟环境的本地地址
第二步:配置这些需要系统变量的软件
🔄 3. 换机迁移与修复逻辑 (B 机)
当在 B 机获取到同步后的 Sync 文件夹后,必须运行 Repair-Env.ps1 (右键powershell运行)进行一键激活。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# --- 1. 获取动态路径 ---
$currentSyncPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
if (-not $currentSyncPath) { $currentSyncPath = Get-Location }
# 固定 Local 路径
$localRoot = "D:\Workspace\Local"
$scoopPath = Join-Path $currentSyncPath "Scoop"
# 拼接子路径
$mavenSettings = Join-Path $scoopPath "apps\maven\current\conf\settings.xml"
$localM2Path = Join-Path $localRoot ".m2\repository"
$localCondaEnvs = Join-Path $localRoot "conda-envs"
Write-Host "`n🚀 环境深度修复开始..." -ForegroundColor Cyan
# --- 2. 强力清理占用进程 (新增:解决你刚才遇到的错误) ---
Write-Host "🧹 正在清理可能占用的 Git/Java 进程..." -ForegroundColor Gray
taskkill /F /IM git* /T 2>$null
taskkill /F /IM keyboxd* /T 2>$null
taskkill /F /IM java* /T 2>$null
# --- 3. Scoop & 核心变量修复 (JAVA_HOME / M2_HOME) ---
if (Test-Path $scoopPath) {
Write-Host "`n🔗 挂载 Scoop & 注入 Java/Maven 变量..." -ForegroundColor Magenta
# 动态获取当前 Sync 下的软件路径
$jdkPath = Join-Path $scoopPath "apps\openjdk\current"
$mavenPath = Join-Path $scoopPath "apps\maven\current"
# 写入系统变量
[Environment]::SetEnvironmentVariable("SCOOP", $scoopPath, "User")
[Environment]::SetEnvironmentVariable("JAVA_HOME", $jdkPath, "User")
[Environment]::SetEnvironmentVariable("M2_HOME", $mavenPath, "User")
# 刷新 Path
$shims = Join-Path $scoopPath "shims"
$bin = Join-Path $scoopPath "apps\scoop\current\bin"
$oldPath = [Environment]::GetEnvironmentVariable("Path", "User")
$pathElements = $oldPath.Split(';') | Where-Object { $_ -notlike "*Scoop\shims*" -and $_ -notlike "*Scoop\apps\scoop\current\bin*" -and $_ -ne "" }
$newPath = "$shims;$bin;" + ($pathElements -join ';')
[Environment]::SetEnvironmentVariable("Path", $newPath, "User")
# 同步到当前会话
$env:SCOOP = $scoopPath
$env:JAVA_HOME = $jdkPath
$env:M2_HOME = $mavenPath
$env:Path = "$shims;$bin;" + $env:Path
scoop reset *
}
# --- 4. Conda 路径修复 ---
$condaScripts = Join-Path $scoopPath "apps\miniconda3\current\Scripts"
if (Test-Path $condaScripts) {
Write-Host "`n🐍 修正 Conda 存储至 D 盘 Local..." -ForegroundColor Yellow
if (-not (Test-Path $localCondaEnvs)) { New-Item -Path $localCondaEnvs -ItemType Directory -Force | Out-Null }
conda config --add envs_dirs $localCondaEnvs
conda init powershell --user | Out-Null
}
# --- 5. Git 右键菜单 (动态路径) ---
$gitPath = Join-Path $scoopPath "apps\git\current"
if (Test-Path $gitPath) {
$regKey = "HKCU:\Software\Classes\Directory\Background\shell\git_shell"
New-Item $regKey -Force | Out-Null
Set-ItemProperty $regKey -Name "Icon" -Value "$gitPath\mingw64\share\git\git-for-windows.ico"
Set-ItemProperty $regKey -Name "MUIVerb" -Value "Git Bash Here"
$cmdKey = Join-Path $regKey "command"
New-Item $cmdKey -Force | Out-Null
Set-ItemProperty $cmdKey -Name "(Default)" -Value "`"$gitPath\git-bash.exe`""
Write-Host "`n✅ Git 右键菜单已修复" -ForegroundColor Green
}
Write-Host "`n🎉 [修复完成] 现在可以重启 PyCharm/IDEA 了。" -ForegroundColor Green
pause
|
当你移动了文件夹位置,或者在 B 机 第一次打开环境时,相关的软链接(Shims)会失效。必须运行本脚本然后“一瞬间修复”:
路径自动重锚:自动识别脚本当前所在物理路径,强制更新 SCOOP 全局环境变量。
软链接重建:执行 scoop reset *,修复 java、mvn、git 等命令的指向。
Maven 仓库核对:
定位行数:精准告知 标签在 settings.xml 中的行数。
智能弹窗:若路径未指向 D:\Workspace\Local,则自动发送系统提醒并打开记事本。