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 反而更符合实际使用方式。

相关推荐
Swift社区8 小时前
Python 开发环境怎么选?PyCharm、VS Code、Trae 谁更适合 AI 开发?
人工智能·python·pycharm
SMF19198 小时前
【PyCharm】让 PyCharm 使用 .venv 虚拟环境
ide·python·pycharm
维度攻城狮1 天前
PyCharm 使用 DevContainer 开发:打造一致、隔离、高效的开发环境
ide·python·pycharm·devcontainer
赵广陆2 天前
RAG进阶
pycharm·langchain
持敬chijing2 天前
超详细!Pycharm的激活安装与使用教程
python·pycharm
赵广陆3 天前
Jupyter和PyCharm完整集成
ide·jupyter·pycharm
二进制杯莫停4 天前
Pycharm直接使用uv管理项目
ide·pycharm·uv
PC2005-cloud5 天前
FinalShell 自定义背景图片教程
ide·python·pycharm
夏殇之殁10 天前
Python:如何在Pycharm中显示geemap地图?
开发语言·python·pycharm