Skip to content

ArtichoKaleyard/CondaManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

CondaManager

🐍 智能 Conda 环境管理器 - 让 Conda 和项目环境和平共处

🎯 这是什么?

一个轻量级的 PowerShell 脚本,解决 Conda 环境和现代 Python 项目工具(uv、venv、poetry 等)之间的依赖冲突问题。

痛点场景

# 你打开终端,Conda base 环境自动激活
(base) PS C:\project>

# 你的项目用 uv/venv 管理依赖
# 结果 pip install 装到 Conda 里了...
# 或者包版本冲突导致各种诡异错误 😱

有了 CondaManager

# 在普通目录 → 自动关闭 base 环境
[CondaManager] 已自动关闭 base 环境
PS C:\Users\YourName>

# 在项目目录 → 智能提示
[!] 检测到项目环境
    当前 Conda 环境: base
是否关闭 Conda 避免依赖冲突? [Y/n] (默认 Y): 
✓ Conda 环境已关闭
PS C:\project>

🚀 快速开始

安装

  1. 下载脚本

    # 保存 CondaManager.ps1 到任意位置
    # 例如: C:\Users\YourName\Documents\Scripts\
  2. 重要:设置正确的编码

    • 用 VSCode 打开脚本
    • 右下角点击编码 → "Save with Encoding" → "UTF-8 with BOM"
    • 或用 Notepad++:编码 → 转为 UTF-8-BOM 编码
  3. 运行部署

    .\CondaManager.ps1

    看到这个界面:

    =============================
       Conda 管理器 - 部署工具  
    =============================
    
    脚本位置: C:\...\CondaManager.ps1
    
    当前状态: [未部署]
    
    部署后每次打开终端都会帮你看着项目环境~
    再也不用担心 Conda 和 uv/venv 打架啦 ヽ(°▽°)ノ
    
    要不要部署到 PowerShell Profile? [Y/n] (默认 Y):
    
  4. 输入 Y 或直接回车 → 完成!

  5. 重启终端生效


📖 工作原理

检测逻辑

脚本会检测当前目录是否包含以下文件:

  • 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 环境

如果你希望在普通目录也保留 base 环境,注释掉第 41-45 行:

# } else {
#     if ($env:CONDA_DEFAULT_ENV -eq 'base') {
#         conda deactivate 2>$null
#         Write-Host "[CondaManager] 已自动关闭 base 环境" -ForegroundColor DarkGray
#     }
# }

❓ 常见问题

Q: 为什么必须用 UTF-8 with BOM?

A: PowerShell 5.1 默认用系统编码(中文 Windows 是 GBK),BOM 能强制识别为 UTF-8,避免中文乱码。

Q: 会不会拖慢终端启动速度?

A: 几乎没有影响(<50ms),只在启动时运行一次。

Q: 如果我想手动激活 Conda 怎么办?

A: 正常使用 conda activate env_name 即可,脚本只在终端启动时运行。

Q: 支持 Linux/Mac 吗?

A: 目前只支持 Windows PowerShell,但可以改写成 Bash 脚本(逻辑类似)。

Q: 卸载后会删除我的 Profile 吗?

A: 不会!只删除脚本添加的部分(两个标记之间的内容),其他配置保持不变。


📂 文件结构

部署后,你的 PowerShell Profile($PROFILE)会包含:

# 你原有的配置...

# >>> CondaManager Start >>>
. "C:\...\CondaManager.ps1" -StartupMode
# <<< CondaManager End <<<

# 你原有的配置...

🐛 故障排查

问题:脚本无法运行,提示"无法加载"

原因:PowerShell 执行策略限制

解决

# 以管理员身份运行 PowerShell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

问题:中文显示乱码

原因:文件编码不正确

解决

  1. 用 VSCode 打开脚本
  2. 右下角点编码 → "Save with Encoding" → "UTF-8 with BOM"
  3. 保存后重新运行

问题:提示找不到 conda 命令

原因: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 Cyan

📜 开源协议

MIT License - 随便用,随便改 (๑•̀ㅂ•́)و✧


🙏 致谢

灵感来源于日常被 Conda 和 uv 搞得焦头烂额的自己 😅


📞 反馈

遇到问题?有新想法?欢迎提 Issue!

📧 联系方式

Email: follower193949@outlook.com

Enjoy your conflict-free Python environment! 🎉

About

一个轻量级的 PowerShell 脚本,解决 Conda 环境和现代 Python 项目工具(uv、venv、poetry 等)之间的依赖冲突问题。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors