安装瓦特加速器

访问瓦特工具箱(Steam++官网) - Watt Toolkit下载windows版本Watt Toolkit加速器,提高访问github等地址的速度。

安装 conda

Windows:访问Download Success | Anaconda下载Adaconda。安装完成后创建Adaconda Prompt快捷方式。

Ubuntu 命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 进入家目录
cd ~
# 下载最新版 Miniconda(64位 Linux)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行安装脚本
# -b:批处理模式(无需交互)
# -p:指定安装路径(这里安装到 ~/miniconda3)
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
# 初始化(会修改 ~/.bashrc)
$HOME/miniconda3/bin/conda init
# 重新加载 shell 配置
source ~/.bashrc
# 验证安装
conda --version
python --version # 应显示 Miniconda 的 Python

shell 的权限获取

1
2
3
4
5
# 打开windows powershell(管理员)
# 查看系统权限:
Get-ExecutionPolicy -List
# 执行修改权限
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

安装新版 PowerShell7

访问在 Windows 上安装 PowerShell - PowerShell | Microsoft Learn根据教程安装下载,或直接访问Releases · PowerShell/PowerShell页面,下载msi安装文件执行安装程序。

1
2
winget search Microsoft.PowerShell
winget install --id Microsoft.PowerShell.Preview --source winget

Windows官方应用市场搜索“终端”。打开系统设置搜索“终端设置”,选择默认的终端应用。修改终端设置,修改默认配置文件选择为PowerShell7。

为PowerShell7设置配置文件

打开终端,执行新建配置文件命令:

1
2
3
4
5
6
7
8
# 检查配置文件是否存在
Test-Path $PROFILE

# 如果返回 False,创建配置文件
New-Item -ItemType File -Path $PROFILE -Force

# 打开 PowerShell 配置文件
notepad $PROFILE

复制配置到文件中,注意修改conda的安装位置

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
# ===== Conda 环境管理配置 =====
if ($global:CondaProfileLoaded) { return }
$global:CondaProfileLoaded = $true

# ===== Conda 初始化 =====
$CondaPath = "D:\ProgramData\anaconda"
$condaPaths = @(
"$CondaPath",
"$CondaPath\Scripts",
"$CondaPath\Library\bin",
"$CondaPath\Library\mingw-w64\bin"
)

$validPaths = $condaPaths | Where-Object { Test-Path $_ }
if ($validPaths) {
$env:Path = ($validPaths -join ";") + ";" + $env:Path
}

if (-not (Get-Command conda -ErrorAction SilentlyContinue)) {
& "$CondaPath\Scripts\conda.exe" init powershell | Out-Null
}

# 禁用自动激活 base
conda config --set auto_activate_base false 2>$null

# ===== Desktop.ini 备注功能 =====
function global:dnote {
<#
.SYNOPSIS
使用 desktop.ini 设置文件夹备注
.DESCRIPTION
为当前文件夹添加系统级备注,在文件资源管理器中悬停可见
.EXAMPLE
dnote "项目描述" # 设置备注
dnote # 查看当前备注
dnote -remove # 移除备注
#>
param(
[string]$Description,
[switch]$Remove
)

$desktopIni = "desktop.ini"
$currentDir = Get-Location

if ($Remove) {
if (Test-Path $desktopIni) {
try {
# 先移除文件的系统和隐藏属性
$file = Get-Item $desktopIni -Force
$file.Attributes = $file.Attributes -band -bnot ([System.IO.FileAttributes]::System -bor [System.IO.FileAttributes]::Hidden)
Remove-Item $desktopIni -Force

# 移除文件夹的系统属性
$folder = Get-Item .
$folder.Attributes = $folder.Attributes -band -bnot [System.IO.FileAttributes]::System

Write-Host "备注已移除" -ForegroundColor Green
} catch {
Write-Host "移除备注失败: $($_.Exception.Message)" -ForegroundColor Red
}
} else {
Write-Host "当前文件夹没有设置备注" -ForegroundColor Yellow
}
return
}

if ($Description) {
try {
# 如果文件已存在,先取消系统属性再删除
if (Test-Path $desktopIni) {
try {
$existingFile = Get-Item $desktopIni -Force
$existingFile.Attributes = $existingFile.Attributes -band -bnot ([System.IO.FileAttributes]::System -bor [System.IO.FileAttributes]::Hidden)
Remove-Item $desktopIni -Force
} catch {
# 继续创建新文件
}
}

# 创建 desktop.ini 内容
$iniContent = @"
[.ShellClassInfo]
InfoTip=$Description
Comment=$Description
"@

# 使用 .NET 方法创建文件
[System.IO.File]::WriteAllText("$currentDir\$desktopIni", $iniContent, [System.Text.Encoding]::Unicode)

# 等待文件创建完成
Start-Sleep -Milliseconds 300

# 设置文件属性为系统和隐藏
$file = Get-Item $desktopIni -Force
$file.Attributes = [System.IO.FileAttributes]::Hidden + [System.IO.FileAttributes]::System

# 设置文件夹为系统文件夹
$folder = Get-Item .
$folder.Attributes = $folder.Attributes -bor [System.IO.FileAttributes]::System

Write-Host "备注已设置: $Description" -ForegroundColor Green
Write-Host "在文件资源管理器中悬停鼠标可以看到备注" -ForegroundColor Cyan

} catch {
Write-Host "设置备注失败: $($_.Exception.Message)" -ForegroundColor Red
}
} else {
# 显示当前备注
if (Test-Path $desktopIni) {
try {
$content = Get-Content $desktopIni -ErrorAction Stop
$descLine = $content | Where-Object { $_ -match "InfoTip=" }
if ($descLine) {
$desc = $descLine.Split("=")[1]
Write-Host "当前备注: " -NoNewline -ForegroundColor Green
Write-Host $desc -ForegroundColor White
}
} catch {
Write-Host "读取备注失败" -ForegroundColor Red
}
} else {
Write-Host "当前文件夹没有设置备注" -ForegroundColor Yellow
Write-Host "使用 'dnote \"项目描述\"' 来添加备注" -ForegroundColor Cyan
}
}
}

# ===== 保存当前环境功能 =====
function global:savec {
<#
.SYNOPSIS
将当前激活的 Conda 环境保存到当前目录
.DESCRIPTION
将当前激活的环境名称保存到当前目录的 .condaenv 文件中
.EXAMPLE
savec # 将当前环境保存到 .condaenv 文件
#>

if (-not $env:CONDA_DEFAULT_ENV -or $env:CONDA_DEFAULT_ENV -eq "base") {
Write-Host "当前没有激活任何环境或处于 base 环境" -ForegroundColor Yellow
Write-Host "请先使用 'cenv 环境名' 激活一个环境" -ForegroundColor Cyan
return
}

$envName = $env:CONDA_DEFAULT_ENV
$envName | Out-File .condaenv -Encoding utf8

Write-Host "✅ 已保存当前环境 '$envName' 到 .condaenv 文件" -ForegroundColor Green
Write-Host "下次进入此目录使用 'ap' 命令即可自动激活此环境" -ForegroundColor Cyan
}

# ===== 自动激活项目环境 =====
function global:Auto-ActivateProject {
# 检查是否有环境配置文件
$hasCondaEnv = Test-Path ".condaenv"
$hasEnvYml = Test-Path "environment.yml"

# 只在有环境配置的目录中自动激活
if ($hasCondaEnv -or $hasEnvYml) {
# 延迟执行确保conda初始化完成
Start-Sleep -Milliseconds 300

# 优先使用 .condaenv 文件
if ($hasCondaEnv) {
$envName = Get-Content .condaenv -ErrorAction SilentlyContinue | Select-Object -First 1
if (-not [string]::IsNullOrWhiteSpace($envName)) {
$envName = $envName.Trim()
try {
conda activate $envName
Show-FolderNote
return
} catch {
# 静默失败
}
}
}

# 其次尝试 environment.yml
if ($hasEnvYml) {
try {
$ymlContent = Get-Content environment.yml -First 10
$envLine = $ymlContent | Where-Object { $_ -match "^name:" } | Select-Object -First 1
if ($envLine) {
$envName = $envLine.Split(":")[1].Trim()
conda activate $envName
Show-FolderNote
return
}
} catch {
# 静默失败
}
}
} else {
# 即使没有环境配置,也显示文件夹备注(如果有)
Show-FolderNote
}
}

# ===== 显示文件夹备注 =====
function global:Show-FolderNote {
$desktopIni = "desktop.ini"
if (Test-Path $desktopIni) {
try {
$content = Get-Content $desktopIni -ErrorAction Stop
$descLine = $content | Where-Object { $_ -match "InfoTip=" }
if ($descLine) {
$desc = $descLine.Split("=")[1]
Write-Host "Note: $desc" -ForegroundColor Cyan
}
} catch {
# 静默失败
}
}
}

# ===== 核心功能函数 =====
function global:ap {
<#
.SYNOPSIS
激活当前目录的 Conda 环境
.DESCRIPTION
自动检测当前目录下的 .condaenv 或 environment.yml 文件并激活对应环境
.EXAMPLE
ap # 激活当前目录配置的环境
#>
$hasCondaEnv = Test-Path ".condaenv"
$hasEnvYml = Test-Path "environment.yml"

if ($hasCondaEnv) {
$envName = Get-Content .condaenv -ErrorAction SilentlyContinue | Select-Object -First 1
if (-not [string]::IsNullOrWhiteSpace($envName)) {
$envName = $envName.Trim()
conda activate $envName
Show-FolderNote
return
}
}

if ($hasEnvYml) {
try {
$ymlContent = Get-Content environment.yml -First 10
$envLine = $ymlContent | Where-Object { $_ -match "^name:" } | Select-Object -First 1
if ($envLine) {
$envName = $envLine.Split(":")[1].Trim()
conda activate $envName
Show-FolderNote
return
}
} catch { }
}

Write-Host "未找到环境配置" -ForegroundColor Yellow
}

function global:cenv {
<#
.SYNOPSIS
激活或退出 Conda 环境
.DESCRIPTION
激活指定环境,如果不提供参数则退出当前环境
.EXAMPLE
cenv myenv # 激活 myenv 环境
cenv # 退出当前环境
#>
param([string]$envName)
if ($envName) {
conda activate $envName
} else {
conda deactivate
}
}

function global:lsc {
<#
.SYNOPSIS
列出所有可用的 Conda 环境
.DESCRIPTION
显示所有已创建的 Conda 环境,当前激活的环境会以星号标记
.EXAMPLE
lsc # 列出所有环境
#>
conda info --envs
}

function global:newc {
<#
.SYNOPSIS
创建新的 Conda 环境
.DESCRIPTION
创建指定名称和包的新环境,可选择保存环境名称到当前目录
.EXAMPLE
newc py39 "python=3.9" # 创建环境但不保存
newc py39 "python=3.9" -Save # 创建并保存环境名称到 .condaenv
#>
param(
[Parameter(Mandatory=$true)][string]$envName,
[Parameter(Mandatory=$true)][string]$packages,
[switch]$Save
)
conda create -n $envName $packages -y
if ($Save) {
$envName | Out-File .condaenv -Encoding utf8
Write-Host "环境已保存到 .condaenv" -ForegroundColor Green
}
conda activate $envName
}

function global:clonec {
<#
.SYNOPSIS
克隆现有的 Conda 环境
.DESCRIPTION
创建指定环境的副本,可选择保存新环境名称到当前目录
.EXAMPLE
clonec base myclone # 克隆 base 环境到 myclone
clonec base myclone -Save # 克隆并保存环境名称到 .condaenv
#>
param(
[Parameter(Mandatory=$true)][string]$sourceEnv,
[Parameter(Mandatory=$true)][string]$targetEnv,
[switch]$Save
)
conda create --name $targetEnv --clone $sourceEnv
if ($Save) {
$targetEnv | Out-File .condaenv -Encoding utf8
Write-Host "环境已保存到 .condaenv" -ForegroundColor Green
}
}

# ===== 简洁提示符 =====
function global:prompt {
# 环境指示器
if ($env:CONDA_DEFAULT_ENV) {
Write-Host "[$($env:CONDA_DEFAULT_ENV)] " -NoNewline -ForegroundColor Green
}

# 路径和输入提示
Write-Host "PS $($executionContext.SessionState.Path.CurrentLocation)" -NoNewline -ForegroundColor Blue
Write-Host ">" -NoNewline -ForegroundColor White
return " "
}

# ===== 帮助命令 =====
function global:conda-help {
Write-Host "`n===== Conda 环境管理命令帮助 =====" -ForegroundColor Cyan
Write-Host "`nap (Activate-Project)" -ForegroundColor Yellow
Write-Host " 功能: 激活当前目录配置的 Conda 环境"
Write-Host " 用法: ap"
Write-Host " 说明: 自动查找 .condaenv 或 environment.yml 文件并激活对应环境"

Write-Host "`ncenv (Conda Environment)" -ForegroundColor Yellow
Write-Host " 功能: 激活或退出 Conda 环境"
Write-Host " 用法: cenv [环境名称]"
Write-Host " 示例: cenv myenv (激活环境)"
Write-Host " cenv (退出当前环境)"

Write-Host "`nlsc (List Conda)" -ForegroundColor Yellow
Write-Host " 功能: 列出所有 Conda 环境"
Write-Host " 用法: lsc"

Write-Host "`nnewc (New Conda)" -ForegroundColor Yellow
Write-Host " 功能: 创建新的 Conda 环境"
Write-Host " 用法: newc [环境名称] [包列表]"
Write-Host " 示例: newc py39 `"python=3.9`""
Write-Host " newc ml `"python=3.8 scikit-learn`" -Save"

Write-Host "`nclonec (Clone Conda)" -ForegroundColor Yellow
Write-Host " 功能: 克隆现有的 Conda 环境"
Write-Host " 用法: clonec [源环境] [目标环境]"
Write-Host " 示例: clonec base myclone"
Write-Host " clonec base myclone -Save"

Write-Host "`nsavec (Save Conda)" -ForegroundColor Yellow
Write-Host " 功能: 将当前激活的环境保存到当前目录"
Write-Host " 用法: savec"
Write-Host " 说明: 将当前环境名称保存到 .condaenv 文件,下次可使用 'ap' 自动激活"

Write-Host "`ndnote (Desktop Note)" -ForegroundColor Yellow
Write-Host " 功能: 使用 desktop.ini 设置文件夹备注"
Write-Host " 用法: dnote [备注内容]"
Write-Host " 示例: dnote `"华为手势的隔空识别项目`""
Write-Host " dnote (查看当前备注)"
Write-Host " dnote -remove (移除备注)"

Write-Host "`nconda-help" -ForegroundColor Yellow
Write-Host " 功能: 显示此帮助信息"
Write-Host " 用法: conda-help"

Write-Host "`n=================================`n" -ForegroundColor Cyan
}

# ===== 首次加载提示 =====
if (-not $global:CondaFirstLoadShown) {
Write-Host "Conda 已加载 | 支持 ap, cenv, lsc, newc, clonec, savec, dnote, conda-help 自定义命令" -ForegroundColor Cyan
$global:CondaFirstLoadShown = $true
}

# ===== 自动激活项目环境 =====
Auto-ActivateProject

自定义命令详解(部分)

1. cenv - Conda 环境切换器

功能:快速激活或停用 Conda 环境

1
2
3
4
5
# 激活环境
cenv myenv

# 停用当前环境
cenv

等价于

1
2
conda activate myenv
conda deactivate
2. `lsc - 环境列表查看器

功能:列出所有可用的 Conda 环境

1
lsconda

等价于

1
conda info --envs
3. newc - 环境创建器

功能:创建新环境并自动配置项目

1
2
3
4
5
# 创建名为 py39 的环境,安装 Python 3.9
newc py39 python=3.9 -Save

# 创建带包的环境
newc torch "pytorch torchvision torchaudio -c pytorch" -Save

功能等价于

1
2
3
conda create -n py39 python=3.9 -y
"py39" > .condaenv
conda activate py39

为什么需要这些自定义命令?

  1. 简化操作
    • cenvconda activate 节省 10 次按键
    • lscconda env list 更直观
  2. 自动化流程
    • newc 一次性完成:
      1. 创建环境
      2. 生成环境配置文件(-Save)
      3. 激活新环境
  3. 减少错误
    • 封装了复杂命令
    • 自动处理文件编码等细节

如何查看这些命令的源码?

在 PowerShell 中运行:

1
2
3
4
5
# 查看 cenv 的源码
(Get-Command cenv).Definition

# 查看所有函数
Get-ChildItem Function:

为Ubuntu 的 bash 配置命令

将在 Windows PowerShell 中编写的 Conda 精简操作配置(如 cenvlscnewcsavecapdnote 等)完整移植到 WSL Ubuntu(即 Linux Bash 环境)中使用

由于 WSL Ubuntu 使用的是 Bash(或 Zsh),而原配置是为 PowerShell 编写的,因此需要:

  • Bash 函数和别名重写核心逻辑;
  • 放弃 dnote 功能(因为 desktop.ini 是 Windows 特有);
  • 保留 .condaenv 自动激活机制;
  • 适配 Conda 的初始化方式(确保 conda activate 可用)。

✅ 最终目标

在 WSL Ubuntu 中实现以下命令:

  • cenv <env>:激活环境;cenv(无参)退出环境
  • lsc:列出所有 Conda 环境
  • newc <name> "<packages>":创建并激活环境(可选 -s 保存)
  • savec:将当前环境名写入 .condaenv
  • ap:自动激活当前目录下的 .condaenvenvironment.yml 对应环境
  • 进入目录时自动激活(通过 PROMPT_COMMAND 实现)

📜 完整配置脚本(适用于 ~/.bashrc

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# ===== Conda 环境管理增强配置(适用于 WSL Ubuntu)=====
# 请将以下内容追加到 ~/.bashrc 文件末尾

# 确保 Conda 已初始化(如果尚未初始化)
if [ -f "$HOME/miniconda3/bin/conda" ]; then
eval "$($HOME/miniconda3/bin/conda shell.bash hook)"
elif [ -f "$HOME/anaconda3/bin/conda" ]; then
eval "$($HOME/anaconda3/bin/conda shell.bash hook)"
fi

# 禁用 base 环境自动激活(可选)
conda config --set auto_activate_base false 2>/dev/null

# ===== 核心函数定义 =====

# cenv: 激活或退出 Conda 环境
cenv() {
if [ $# -eq 0 ]; then
conda deactivate
else
conda activate "$1"
fi
}

# lsc: 列出所有 Conda 环境
alias lsc='conda info --envs'

# newc: 创建新环境(支持 -s 保存)
newc() {
local env_name="$1"
local packages="$2"
local save_flag=false

# 检查是否包含 -s 参数(放在任意位置)
if [[ "$*" == *"-s"* ]]; then
save_flag=true
# 移除 -s 参数
packages=$(echo "$2" | sed 's/ -s//g')
fi

if [ -z "$env_name" ] || [ -z "$packages" ]; then
echo "用法: newc <环境名> \"<包列表>\" [-s]"
echo "示例: newc py39 \"python=3.9\" -s"
return 1
fi

conda create -n "$env_name" $packages -y
if [ $? -eq 0 ]; then
conda activate "$env_name"
if [ "$save_flag" = true ]; then
echo "$env_name" > .condaenv
echo "✅ 环境已保存到 .condaenv"
fi
fi
}

# savec: 保存当前环境到 .condaenv
savec() {
if [ -z "$CONDA_DEFAULT_ENV" ] || [ "$CONDA_DEFAULT_ENV" = "base" ]; then
echo "⚠️ 当前未激活任何环境(或处于 base)"
return 1
fi
echo "$CONDA_DEFAULT_ENV" > .condaenv
echo "✅ 已保存环境 '$CONDA_DEFAULT_ENV' 到 .condaenv"
}

# ap: 手动激活当前目录的环境
ap() {
_auto_activate_conda
}

# 自动激活函数(内部使用)
_auto_activate_conda() {
local env_name=""
if [ -f ".condaenv" ]; then
env_name=$(head -n1 .condaenv | tr -d '[:space:]')
elif [ -f "environment.yml" ]; then
env_name=$(grep "^name:" environment.yml | head -n1 | cut -d':' -f2 | tr -d ' ')
fi

if [ -n "$env_name" ]; then
# 静默尝试激活
conda activate "$env_name" 2>/dev/null && echo -e "\033[0;32m[Activated: $env_name]\033[0m"
fi
}

# 显示帮助
conda-help() {
cat <<EOF

===== Conda 环境管理命令帮助 (WSL Ubuntu) =====

ap : 自动激活当前目录的 .condaenv 或 environment.yml 环境
cenv [env] : 激活指定环境;无参则退出当前环境
lsc : 列出所有 Conda 环境
newc name "pkgs" [-s] : 创建新环境,-s 表示保存到 .condaenv
savec : 将当前环境名保存到 .condaenv
conda-help : 显示此帮助

注意:进入目录时会自动尝试激活环境(通过 PROMPT_COMMAND)

==============================================
EOF
}

# ===== 自动激活:每次 cd 后触发 =====
# 覆盖 cd 命令
cd() {
builtin cd "$@"
_auto_activate_conda
}

# ===== 可选:在提示符显示当前环境 =====
# 如果你使用默认 PS1,可添加环境显示
if [ -z "$_CONDA_PROMPT_MODIFIER" ]; then
_CONDA_PROMPT_MODIFIER='$(if [ -n "$CONDA_DEFAULT_ENV" ]; then echo "\[\033[0;32m\][$CONDA_DEFAULT_ENV]\[\033[0m\] "; fi)'
PS1="$_CONDA_PROMPT_MODIFIER$PS1"
fi

# ===== 首次加载提示 =====
if [ -z "$_CONDA_WSL_LOADED" ]; then
echo -e "\033[0;36mConda 增强配置已加载 | 支持 ap, cenv, lsc, newc, savec, conda-help\033[0m"
export _CONDA_WSL_LOADED=1
fi

🔧 使用步骤

  1. 打开 WSL Ubuntu 终端
  2. 编辑 ~/.bashrc
    1
    nano ~/.bashrc
  3. 将上述完整脚本粘贴到文件末尾
  4. 保存并退出Ctrl+O → Enter → Ctrl+X
  5. 重新加载配置
    1
    2
    3
    #确保已关闭 Conda 自带括号(避免重复):
    conda config --set changeps1 false
    source ~/.bashrc

⚠️ 注意事项

  • Conda 路径:脚本默认检测 ~/miniconda3~/anaconda3,如果你安装在其他位置,请修改路径。
  • dnote 不支持:Linux 无 desktop.ini,建议用 .project-note + 自定义提示替代(如有需要可补充)。
  • newc-s 参数:必须放在包字符串之后(如 newc test "python=3.9" -s),这是 Bash 解析限制。
  • 自动激活:每次 cd 进入目录都会尝试激活,无需手动运行 ap(但保留 ap 命令供调试)。

✅ 验证

1
2
3
4
5
6
7
newc testenv "python=3.10" -s
cd ..
mkdir test2 && cd test2
# 应自动激活 testenv
cenv # 退出
lsc # 查看环境
conda-help # 查看帮助

设置 conda 镜像地址

设置Conda的镜像地址的命令任选其一

清华源:

1
2
3
4
# 添加清华源镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

阿里云:

1
2
3
4
# 添加阿里云镜像
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free
conda config --set show_channel_urls yes

中科大:

1
2
3
4
# 添加中科大镜像
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free
conda config --set show_channel_urls yes

恢复官方默认源命令:

1
2
3
# 移除所有非默认镜像
conda config --remove-key channels
conda config --set show_channel_urls true

查看Conda配置的命令:

1
2
# 查看Conda配置
conda config --show channels

conda的配置文件在C:/user/username/.condarc,可设置默认环境创建位置(位置需要有权写入):

1
2
3
4
5
6
show_channel_urls: true
channels:
- defaults
envs_dirs:
- D:/CondaEnv
auto_activate: false

设置 Pip 镜像地址

创建或编辑 C:\Users\用户名\pip\pip.ini 文件(Windows),添加:

1
2
3
4
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

或直接使用命令行创建:

1
2
3
# 设置Pip阿里云镜像地址
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com

其他可用镜像源:

镜像源名称 URL
阿里云 https://mirrors.aliyun.com/pypi/simple/
腾讯云 https://mirrors.cloud.tencent.com/pypi/simple/
华为云 https://mirrors.huaweicloud.com/repository/pypi/simple/
中科大 https://pypi.mirrors.ustc.edu.cn/simple/

查看Pip配置的命令:

1
2
# 查看Pip配置
pip config list

预期输出:显示

1
2
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
install.trusted-host='pypi.tuna.tsinghua.edu.cn'

修改回官方源命令:

1
2
3
# 设置为官方源地址
pip config set global.index-url https://pypi.org/simple
pip config unset install.trusted-host

本地安装轮子命令:

1
pip install --no-index --no-deps <<本地文件地址>>

设置 HF 镜像地址

新建系统变量,变量名为: HF_ENDPOINT

变量值为: https://hf-mirror.com

linux设置办法:

1
2
3
4
5
6
# 永久设置(写入配置文件)
# 将命令添加到 ~/.bashrc(或 ~/.zshrc,取决于你的 Shell):
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc

# 重启终端或执行 source ~/.bashrc 后永久生效。
source ~/.bashrc

Windows设置办法:

1
2
# 在 PowerShell 中执行(需管理员权限):
setx HF_ENDPOINT "https://hf-mirror.com" /M

创建环境并激活

我的习惯是用conda创建环境用uv/ pip安装依赖。

建议顺序:到指定位置创建项目文件夹,打开文件夹后右键进入终端,运行自定义创建环境命令。用PyCharm打开该项目文件,设置解释器,使用内置终端安装其他包。注意:如果在项目中修改环境,不要忘记更换解释器。

标准命令为打开Adaconda Prompt,执行查看所有环境:

1
2
# 查看所有环境
conda env list

执行创建环境命令:(环境名设置为pytorch_env,可自定义)

1
2
# 创建环境
conda create -n pytorch_env python=3.9

根据提示输入y安装必要的包。

执行激活环境命令:

1
2
# 激活环境
conda activate pytorch_env

当然还有退出环境命令:

1
2
# 停用正在运行的环境
conda deactivate

删除某个环境及其下所有包

1
2
# 如果想跳过确认提示,直接删除,可加上 -y 参数:
conda remove --name pytorch_env --all -y

导出当前的全部pip依赖

1
pip freeze > requirements.txt

安装 uv

1
pip install uv

安装 Pytorch(GPU)

检查Python版本的命令:

1
python --version

下载最新的英伟达驱动:

访问下载面向游戏玩家和创作者的 NVIDIA App | NVIDIA下载NVIDIA APP,安装后更新显卡驱动程序。

检查英伟达显卡版本的命令:

1
nvidia-smi

预期输出如:CUDA Version: 12.9,此时需要下载小于该版本的的PyTorch。

使用PyTorch一般无需前往英伟达开发者官网下载CUDA以及cuDNN.

访问Get Started选择正确的版本,复制Run this Command:的命令执行pytorch的安装:

1
2
# 官方PyTorch安装命令
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

检查PyTorch版本:

1
python -c "import torch; print('PyTorch 版本:', torch.__version__)"

验证 GPU 是否可用:

1
python -c "import torch; print('GPU 可用:', torch.cuda.is_available()); print('CUDA 版本:', torch.version.cuda)"

预期输出:
PyTorch 版本显示 2.7.1 或更高
GPU 可用为 True,CUDA 版本显示 12.8

执行测试代码:运行简单的张量计算:

1
2
3
4
5
6
7
8
9
import torch

# 创建张量
x = torch.tensor([1.0, 2.0, 3.0], device='cuda') # 移至 GPU
y = torch.tensor([4.0, 5.0, 6.0], device='cuda')

# 计算
z = x + y
print(f"计算结果: {z}") # 输出应显示在 GPU 上的计算结果

安装 TensorFlow

安装 NumPy

执行安装命令:

1
pip install numpy

执行测试命令:检查NumPy版本

1
python -c "import numpy; print('NumPy 版本:', numpy.__version__)"

执行测试代码:运行简单的 NumPy 计算

1
2
3
4
5
import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(f"NumPy 计算结果: {a + b}") # 输出 [5 7 9]

安装 Matplotlib

执行安装命令:

1
pip install matplotlib

执行测试代码:绘制简单图表(保存为 test_matplotlib.py 并执行)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import matplotlib.pyplot as plt

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

# 示例:绘制包含负数的图表
x = [-2, -1, 0, 1, 2]
y = [4, 1, 0, 1, 4]
plt.plot(x, y, 'o-')
plt.title("二次函数图像")
plt.xlabel("x值")
plt.ylabel("y值")
plt.show()

注意:可选中文字体列表

字体名称 适用系统 安装方式
SimHei(黑体) Windows 系统自带,路径为 C:\Windows\Fonts\simhei.ttf
WenQuanYi Micro Hei Linux 多数 Linux 发行版自带,或通过 sudo apt-get install fonts-wqy-microhei 安装
Heiti TC(黑体) macOS 系统自带,路径为 /System/Library/Fonts/PingFang.ttc
Source Han Sans 跨平台 通过 pip install fontsource-han-sans 安装(适用于 Matplotlib v3.6+)

安装 Pandas

执行安装命令:

1
pip install pandas

执行测试代码:创建简单 DataFrame

1
2
3
4
5
6
7
import pandas as pd

# 创建数据
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print("Pandas DataFrame:")
print(df) # 输出表格形式数据

安装 Transformers

执行安装命令:

1
pip install transformers

执行测试命令:检查 Transformers 版本

1
python -c "import transformers; print('Transformers 版本:', transformers.__version__)"

运行测试代码:

1
2
3
4
5
6
7
8
9
from transformers import pipeline

# 加载文本生成模型
generator = pipeline('text-generation', model='gpt2')

# 生成文本
text = generator("Hello, I'm a language model,", max_length=30, num_return_sequences=1)
print("生成的文本:")
print(text[0]['generated_text']) # 输出 GPT-2 生成的文本

安装 Tensorboard

执行安装命令:

1
pip install tensorboard # 可视化训练过程

安装 huggingface_hub[hf_xet]

可能的警告:

1
2
3
Xet Storage is enabled for this repo, but the 'hf_xet' package is not installed. 
Falling back to regular HTTP download. For better performance, install the package with:
`pip install huggingface_hub[hf_xet]` or `pip install hf_xet`

含义:Hugging Face 使用了一种名为 Xet Storage 的高效存储系统,但您的环境中没有安装对应的 Python 包
影响:模型会使用常规 HTTP 方式下载,速度可能稍慢但功能完全正常
建议:可以忽略此警告,或者安装推荐的包提高下载速度:

执行安装命令:

1
pip install huggingface_hub[hf_xet]

安装 Datasets

执行安装命令:

1
pip install datasets

运行测试代码:

1
2
3
4
5
6
from datasets import load_dataset

# 加载示例数据集
dataset = load_dataset('glue', 'mrpc', split='train')
print("数据集示例:")
print(dataset[0]) # 输出 MRPC 数据集的第一条样本

安装 JupyterLab

执行安装命令:

1
pip install jupyterlab ipywidgets

执行测试命令:启动 JupyterLab

1
jupyter lab

可以先在基础环境安装JupyterLab,然后将项目环境注册为内核。

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
# 先在基础环境安装JupyterLab
conda activate base
pip install jupyterlab ipywidgets

# 退出当前环境
conda deactivate

# 激活 你的项目环境
# conda 示例
conda activate mymodel
# venv 示例(Linux/macOS):
source mymodel/bin/activate
# venv 示例(Windows):
mymodel\Scripts\activate


# 安装必要包
pip install ipykernel

# 注册为 Jupyter 内核
python -m ipykernel install --user --name mymodel --display-name "My Model (Py3.11)"

# 返回 base 环境启动 JupyterLab
conda deactivate
conda activate base
jupyter lab

使用 uv 一次性安装(更快)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装命令举例
uv pip install transformers>=4.57.0 \
qwen-vl-utils>=0.0.14 \
optimum>=2.1.0 \
GPTQModel>=5.6.12 \
accelerate>=1.12.0 \
safetensors>=0.7.0 \
einops \
numpy \
pillow \
bitblas \
torchvision \
jupyterlab \
ipywidgets

# 更新命令举例
uv pip install gptqmodel --upgrade