PyCharm 连接 HPC 时 Path to conda 一直转圈:一次 Remote Development 解决方案记录

最近在使用学校 HPC / GPU 服务器时,遇到了一个比较折磨的问题:本地 PyCharm Professional 通过 SSH 配置远程 Python Interpreter 时,前面的 SSH 连接都是正常的,但是到了最后一步选择 Path to conda 时一直转圈,导致无法正常选择 Conda 环境。

折腾了一圈之后,最终发现问题不一定出在 SSH、服务器、Conda 环境本身,而是本地 PyCharm 的 SSH Interpreter 配置流程在某些远程容器环境下不稳定。最后我的解决方式是:不用传统的本地 PyCharm + SSH Interpreter,而是改用 JetBrains Remote Development。

这篇文章记录一下整个过程,避免之后自己忘记,也给类似环境下踩坑的人一个参考。

1. 使用场景

我的环境大概是这样:

  • 本地系统:Windows
  • IDE:PyCharm Professional
  • 远程环境:学校 HPC / GPU 服务器
  • 连接方式:SSH
  • 远程代码目录:服务器上的持久化挂载目录
  • Python 环境:Conda 环境,放在个人目录下

例如我的目录结构大致类似:

bash 复制代码
/hpc2hdd/home/<group>/<user>/
├── envs/
│   └── xxx-py39/
└── projects/
    ├── project1/
    └── project2/

这里需要注意,项目和 Conda 环境最好放在服务器的持久化目录下,而不是 /tmp 这种临时目录。

2. 原本想用的方式

一开始我想用的是 PyCharm 常见的远程解释器配置方式:

sql 复制代码
Settings
→ Python
→ Interpreter
→ Add Interpreter
→ On SSH
→ Existing SSH
→ Select existing
→ Conda

理论上,最后一步应该选择:

javascript 复制代码
Path to conda:
/hpc2hdd/home/<group>/miniconda3/bin/conda

Environment:
/hpc2hdd/home/<group>/<user>/envs/xxx-py39

但是实际情况是:Path to conda 一直转圈,加载不出来。

3. 问题现象

奇怪的是,SSH 本身并没有问题。

例如这些都可以正常工作:

xml 复制代码
ssh <username>@ <host> -p <port>

Web 终端也可以正常进入服务器。

Conda 环境也确实存在:

bash 复制代码
ls -ld /hpc2hdd/home/<group>/<user>/envs/xxx-py39

Python 也可以正常运行:

bash 复制代码
/hpc2hdd/home/<group>/<user>/envs/xxx-py39/bin/python --version

也可以输出当前解释器路径:

bash 复制代码
/hpc2hdd/home/<group>/<user>/envs/xxx-py39/bin/python -c "import sys; print(sys.executable)"

Conda 本身也能正常返回 JSON:

bash 复制代码
timeout 30 /hpc2hdd/home/<group>/miniconda3/bin/conda info --json > /tmp/conda-info.json
echo $?

如果返回 0,说明 conda 命令本身没有卡死。

所以问题并不是"服务器连不上",也不是"Conda 坏了",而是 PyCharm 本地 SSH Interpreter 配置流程在探测远程 Conda 时卡住了。

4. 尝试过但没有根本解决的方法

我尝试过:

  • 重启 PyCharm
  • 重启电脑
  • Invalidate Caches / Restart
  • 更新 PyCharm 到新版
  • 换不同的远程容器
  • 换 VSCode 类型容器 / JupyterLab 类型容器
  • 确认 SSH、SFTP、Web 终端都能正常连接

这些方法对 SSH 本身有效,但没有稳定解决 Path to conda 一直转圈的问题。

5. 最终解决方案:使用 Remote Development

最后采用的是 JetBrains 的 Remote Development。

入口大概是:

sql 复制代码
PyCharm
→ Remote Development
→ SSH
→ 选择已有 SSH 连接
→ 选择远程项目目录
→ Download IDE Backend and Connect

项目目录选择服务器上的真实项目路径,例如:

bash 复制代码
/hpc2hdd/home/<group>/<user>/projects/project1

第一次连接时,PyCharm 会提示下载 IDE Backend,比如 1G 多。这个下载的是远程服务器上的 IDE 后端,不是普通意义上把整个 IDE 装到本地 C 盘。简单理解就是:

本地电脑只是显示界面,真正的 PyCharm 后端、索引、运行、解释器探测都发生在远程服务器上。

连接完成后,会打开一个新的远程 PyCharm 窗口。

这时再配置解释器:

sql 复制代码
Settings
→ Python
→ Interpreter
→ Add Interpreter
→ On SSH
→ Select existing
→ Conda

这一次 Path to conda 就可以正常加载了。

填写:

bash 复制代码
Path to conda:
/hpc2hdd/home/<group>/miniconda3/bin/conda

选择已有环境:

bash 复制代码
/hpc2hdd/home/<group>/<user>/envs/xxx-py39

最后点击 Create / Apply 即可。

6. 为什么 Remote Development 可以解决?

我的理解是:

传统方式是:

复制代码
本地 PyCharm
→ 通过 SSH 探测远程服务器
→ 再尝试识别 Conda
→ 再配置远程 Interpreter

而 Remote Development 是:

复制代码
PyCharm 后端直接运行在服务器上
→ 在服务器本地识别 Conda 和 Python
→ 本地电脑只是显示界面

所以对于 HPC、容器、共享挂载目录这类复杂环境,Remote Development 更稳定。

7. 本地 PyCharm + SSH Interpreter 和 Remote Development 的区别

对比项 本地 PyCharm + SSH Interpreter Remote Development
IDE 后端运行位置 本地 Windows 远程服务器
代码主要位置 本地为主,再同步到服务器 服务器为主
文件同步 依赖 Deployment / SFTP / Auto Upload 一般不需要同步
Conda 探测 本地 PyCharm 通过 SSH 探测远程 远程 PyCharm 后端直接探测
适合场景 普通远程服务器、小项目 HPC、远程容器、大项目、复杂环境
常见问题 Path to conda 卡住、同步映射问题 第一次需要下载远程 IDE Backend

8. 新项目应该怎么操作?

我的推荐流程是:

第一步:在服务器上创建项目目录

bash 复制代码
mkdir -p /hpc2hdd/home/<group>/<user>/projects
mkdir -p /hpc2hdd/home/<group>/<user>/envs

例如:

bash 复制代码
/hpc2hdd/home/<group>/<user>/projects/project1

第二步:把代码放到服务器项目目录

可以使用:

  • PyCharm Remote Development 打开后直接操作
  • FileZilla / SFTP
  • git clone
  • scp / rsync

例如:

bash 复制代码
cd /hpc2hdd/home/<group>/<user>/projects
git clone <your_repo_url> project1

第三步:命令行创建 Conda 环境

不要强依赖 PyCharm 图形界面创建环境,可以直接在 Web 终端或 SSH 终端中创建:

bash 复制代码
/hpc2hdd/home/<group>/miniconda3/bin/conda create \
  -p /hpc2hdd/home/<group>/<user>/envs/xxx-py39 \
  python=3.9 -y

激活环境:

bash 复制代码
conda activate /hpc2hdd/home/<group>/<user>/envs/xxx-py39

第四步:安装依赖

进入项目目录:

bash 复制代码
cd /hpc2hdd/home/<group>/<user>/projects/project1

安装依赖:

复制代码
pip install -r requirements.txt

如果项目需要 editable install,再执行:

erlang 复制代码
python -m pip install -e .

9. python -m pip install -e . 是什么意思?

这个命令不是"同步文件",也不是"上传代码"。

它的意思是:

把当前项目以 editable mode 安装到当前 Python 环境里。

也就是说,Python 环境会知道当前这个源码目录就是一个可导入的包。

例如项目目录里有:

arduino 复制代码
project1/
setup.py
pyproject.toml

执行:

erlang 复制代码
python -m pip install -e .

之后,你在代码里修改源码,Python 运行时可以直接读取当前源码目录里的内容,而不需要每次修改后重新 pip install

它解决的是"Python 环境如何识别当前项目包"的问题,而不是"本地代码如何同步到服务器"的问题。

10. 需要注意的坑

1. 不要把项目和环境放在 /tmp

/tmp 可能是临时目录,容器停止或环境重启后可能丢失。

推荐放在持久化目录,例如:

bash 复制代码
/hpc2hdd/home/<group>/<user>/projects
/hpc2hdd/home/<group>/<user>/envs

2. Remote Host 面板不是必须打开

如果使用 Remote Development,左侧 Project 目录本身就已经是服务器上的项目目录。

右侧 Remote Host 面板只是一个远程文件浏览器,不是必须使用。

3. PyCharm Community Edition 不支持完整远程开发功能

如果要使用 SSH Interpreter / Remote Development,建议使用 PyCharm Professional 或新版统一产品中带有专业功能的版本。

4. 看到多个 SSH 配置或 (2) 不一定有问题

PyCharm 里可能会出现多个 SSH 配置,例如:

ruby 复制代码
user@host:port password
user@host:port password (2)

这通常只是 PyCharm 保存了多个连接配置,不一定代表不同服务器,也不一定代表不同 GPU。

真正要确认的是:

  • SSH 用户名是否正确
  • Host 是否正确
  • Port 是否正确
  • 项目目录是否正确
  • Conda 环境路径是否正确

11. 总结

这次问题的核心不是 SSH 连不上,也不是 Conda 环境坏了,而是本地 PyCharm 的 SSH Interpreter 配置流程在探测远程 Conda 时卡住。

最终比较稳定的方案是:

  1. 在服务器 Web 终端或 SSH 终端中手动创建 Conda 环境;
  2. 把项目代码放在服务器持久化目录;
  3. 使用 PyCharm Remote Development 打开远程项目;
  4. 在远程 PyCharm 后端里选择已有 Conda 环境。

简单来说:

本地 PyCharm + SSH Interpreter 是"本地 IDE 操作远程环境";

Remote Development 是"远程服务器上跑 IDE 后端,本地只是显示界面"。

对于学校 HPC、共享 GPU 容器、远程挂载目录这种场景,Remote Development 反而更符合实际使用方式。

相关推荐
澈如冬雪^8 小时前
IDEA导入已经下载的jar包
pycharm·intellij-idea·jar
qq_4260039611 小时前
UI自动化元素定位不到解决方案
前端·pycharm·自动化
丈剑走天涯1 天前
基于 Python 3 语法的 PyCharm 练习示例,涵盖列表操作、类型判断及数据清洗等核心知识点
windows·python·pycharm
洛兮银儿1 天前
pycharm选中同一个词的标记颜色的修改
ide·python·pycharm
郝学胜_神的一滴1 天前
Effective Python 条款 6:善用拆包告别恼人的下标索引
python·pycharm
2601_962382432 天前
怎么使用pycharm开发图形化界面
pycharm·教程·开发·图形化界面·pyqt5
qq_426003964 天前
多语言新增语种全量测试策略
前端·javascript·python·pycharm·自动化
豆角焖肉6 天前
SSM 聚合项目搭建:多 Maven 模块项目
开发语言·python·pycharm
承渊政道6 天前
【Python编程—从入门到实践】(Python操作列表深度教程:循环、切片、元组与代码风格)
开发语言·python·pycharm·列表·元组·切片
布值倒区什么name6 天前
Pycharm2026找不到编译器 点击运行运行不了
开发语言·python·pycharm