🐍 智能 Conda 环境管理器 - 让 Conda 和项目环境和平共处
一个轻量级的 PowerShell 脚本,解决 Conda 环境和现代 Python 项目工具(uv、venv、poetry 等)之间的依赖冲突问题。
# 你打开终端,Conda base 环境自动激活
(base) PS C:\project>
# 你的项目用 uv/venv 管理依赖
# 结果 pip install 装到 Conda 里了...
# 或者包版本冲突导致各种诡异错误 😱# 在普通目录 → 自动关闭 base 环境
[CondaManager] 已自动关闭 base 环境
PS C:\Users\YourName>
# 在项目目录 → 智能提示
[!] 检测到项目环境
当前 Conda 环境: base
是否关闭 Conda 避免依赖冲突? [Y/n] (默认 Y):
✓ Conda 环境已关闭
PS C:\project>-
下载脚本
# 保存 CondaManager.ps1 到任意位置 # 例如: C:\Users\YourName\Documents\Scripts\
-
重要:设置正确的编码
- 用 VSCode 打开脚本
- 右下角点击编码 → "Save with Encoding" → "UTF-8 with BOM"
- 或用 Notepad++:编码 → 转为 UTF-8-BOM 编码
-
运行部署
.\CondaManager.ps1
看到这个界面:
============================= Conda 管理器 - 部署工具 ============================= 脚本位置: C:\...\CondaManager.ps1 当前状态: [未部署] 部署后每次打开终端都会帮你看着项目环境~ 再也不用担心 Conda 和 uv/venv 打架啦 ヽ(°▽°)ノ 要不要部署到 PowerShell Profile? [Y/n] (默认 Y): -
输入 Y 或直接回车 → 完成!
-
重启终端生效
脚本会检测当前目录是否包含以下文件:
uv.lock→ uv 项目.venv/→ virtualenv/venv 项目pyproject.toml→ Poetry/PDM/Hatch 项目requirements.txt→ pip 项目
| 场景 | 行为 | 提示 |
|---|---|---|
| 项目目录 | 询问是否关闭 Conda | [!] 检测到项目环境 (黄色) |
| 普通目录 | 自动关闭 base 环境 | [CondaManager] 已自动关闭 base 环境 (灰色) |
| 无 Conda 激活 | 不做任何操作 | 无提示 |
- 同时使用 Conda 和 uv/venv
- 经常在不同项目间切换
- 想要 Conda 在需要时才激活
- 不想在每个终端都看到
(base)
- 所有项目都用 Conda 管理
- 需要 base 环境始终激活
- 不用 PowerShell(Linux/Mac 用户)
PS C:\Scripts> .\CondaManager.ps1
=============================
Conda 管理器 - 部署工具
=============================
当前状态: [未部署]
要不要部署到 PowerShell Profile? [Y/n] (默认 Y): y
✓ 部署成功!下次启动终端即可生效
Tips: cd 到项目目录试试,会自动提示的哦 (๑•̀ㅂ•́)و✧PS C:\Scripts> .\CondaManager.ps1
=============================
Conda 管理器 - 部署工具
=============================
当前状态: [已部署]
用得还顺手吗?要卸载吗?
确认卸载? [y/N] (默认 N,也就是不卸载): n
懂了,手滑了是吧 ( ̄▽ ̄)ノ 那就继续用着~# 在项目目录打开终端
Windows PowerShell
[!] 检测到项目环境
当前 Conda 环境: base
是否关闭 Conda 避免依赖冲突? [Y/n] (默认 Y):
✓ Conda 环境已关闭
PS C:\project> uv pip install requests # 安全!编辑脚本第 22 行:
# 添加更多项目标记文件
$projectMarkers = @(
"uv.lock",
".venv",
"pyproject.toml",
"requirements.txt",
"poetry.lock", # 添加 Poetry
"Pipfile", # 添加 Pipenv
"conda.yaml" # 添加 conda env 文件
)如果你希望在普通目录也保留 base 环境,注释掉第 41-45 行:
# } else {
# if ($env:CONDA_DEFAULT_ENV -eq 'base') {
# conda deactivate 2>$null
# Write-Host "[CondaManager] 已自动关闭 base 环境" -ForegroundColor DarkGray
# }
# }A: PowerShell 5.1 默认用系统编码(中文 Windows 是 GBK),BOM 能强制识别为 UTF-8,避免中文乱码。
A: 几乎没有影响(<50ms),只在启动时运行一次。
A: 正常使用 conda activate env_name 即可,脚本只在终端启动时运行。
A: 目前只支持 Windows PowerShell,但可以改写成 Bash 脚本(逻辑类似)。
A: 不会!只删除脚本添加的部分(两个标记之间的内容),其他配置保持不变。
部署后,你的 PowerShell Profile($PROFILE)会包含:
# 你原有的配置...
# >>> CondaManager Start >>>
. "C:\...\CondaManager.ps1" -StartupMode
# <<< CondaManager End <<<
# 你原有的配置...原因:PowerShell 执行策略限制
解决:
# 以管理员身份运行 PowerShell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser原因:文件编码不正确
解决:
- 用 VSCode 打开脚本
- 右下角点编码 → "Save with Encoding" → "UTF-8 with BOM"
- 保存后重新运行
原因:Conda 未添加到 PATH
解决:
# 初始化 Conda(只需运行一次)
conda init powershell不喜欢默认的文案?可以随意修改!
# 第 28 行 - 项目检测提示
Write-Host "[!] 检测到项目环境" -ForegroundColor Yellow
# 改成 →
Write-Host "⚠️ 项目环境警告!" -ForegroundColor Red
# 第 44 行 - 自动关闭提示
Write-Host "[CondaManager] 已自动关闭 base 环境" -ForegroundColor DarkGray
# 改成 →
Write-Host "🔕 base 环境已静默关闭" -ForegroundColor CyanMIT License - 随便用,随便改 (๑•̀ㅂ•́)و✧
灵感来源于日常被 Conda 和 uv 搞得焦头烂额的自己 😅
遇到问题?有新想法?欢迎提 Issue!
Email: follower193949@outlook.com
Enjoy your conflict-free Python environment! 🎉