0.前言
网上关于『PyCharm + SSH 服务器』的教程林林总总,但质量参差不齐。我每次配置,都要再找一遍教程,结果就是…… 唉,不说了,说多了都是泪。
今天痛定思痛,把这套流程记录下来,并且记录一些自己踩到的坑。
1.conda 环境
这里推荐《用conda创建python虚拟环境》这篇博客。
但需要额外说明的是,目前 conda 激活环境的命令已经统一,为 $ conda activate -n <env_name>
,不再是之前的 source
的写法。
此外,这里记录一个坑,参考《在Pycharm下创建Anaconda虚拟环境,但envs目录下没有interpreter解释器问题的解决》这篇博客。原因出在创建环境时:
- 如果
$ conda create -n test
没有带上python
参数,会导致anaconda3/envs/test/
下没有相关的 Python 解释器,因为此时只相当于创建了一个没有内容的名为 ”test“ 的 conda 空环境,该环境下没有安装 Python。 - 正确写法是
$ conda create -n test python
或$ conda create -n test python=x.x
。前者默认会安装最新的 Python 版本,后者则可以安装指定的 Python 版本。至于该命令的其他参数(如安装一些包等),具体请参考官方文档。
2.PyCharm + SSH
这里请参考《 Windows + PyCharm + 服务器 + 远程开发(多图预警)》。
这里又是一个坑:
情景再现
- 笔者在同一台远程服务器上创建了 2 个环境
test_ssh
和xgb
,第一个用于测试,第二个是笔者正式的项目; - 创建第一个环境
test_ssh
,一切测试正常;创建第二个环境xgb
也正常; - 但当我回到第一个环境
test_ssh
时,居然神奇的多了一个基本一样的部署的配置,唯一的区别在于第二个配置里 “Mappings” 是空白的;
- 然后我就删掉了下面一个,然后第二个环境能连上服务器,但是会报错,无法运行;
- 后来我学乖了,两个部署的配置都不删除,可相同的问题还是存在。
问题解决
排查一圈,发现最终问题出现在 []Visible only for this project
上,我在 test_ssh
项目里给勾上了这个,结果就导致另一个 xgb
项目无法使用。:joy:
3.小结
- conda 环境需要加上
python
参数才能安装上 Python。 - PyCharm 针对同一个服务器配置的多个 conda 环境(或者说多个 Python 解释器),会相应地生成多个部署的配置(”Deployment”),虽然点进去查看,会发现它们长得很像,但千万不要以为是自己重复配置了,就将其删除!
- 针对上述同一个服务器配置多个 conda 环境的情况,还需要注意:不要勾选上
[]Visible only for this project
,否则同样会导致另一个项目无法使用同一个服务器下的其他环境。
最后,建议将上述的配置进行重命名,从而加以区分。