Featured image of post 笔记本与台式开发环境搭建

笔记本与台式开发环境搭建

将基础环境搭建,然后进行同步到onedrive

创建日期:
最后修改:

🚀 跨机器科研开发环境配置手册 (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

  1. 在 PowerShell 中通过环境变量设置,将 Scoop 的安装位置指定到 Sync 目录下。
  2. 安装核心科研工具链:git,maven,miniconda3,openjdk17
  3. 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,则自动发送系统提醒并打开记事本。

最后更新于 2026-03-26 20:59