PyCharm配置远程python解释器
使用场景及简介
首先声明,本文的配置方法肯定是亲测可行的,如果出现什么问题,欢迎留言给我。
虽然对于个人日常使用来说,Windows更加友好,但深度学习工作常需要在服务端(linux)环境中跑模型代码。对于新手来说,在学习ML/DL时,常常需要将本地写的代码传到GPU服务器中,然后在服务器上运行。这种方式需要先在本地写好代码,然后通过WinSCP这样的文件传输工具将写好的代码文件传到服务器,再通过ssh工具(如Xshell)远程连接服务器,执行相应的python脚本。这样的方式十分繁琐,效率很低。下面来介绍一下如何为本地PyCharm配置远程解释器,这样就可以直接在本地的PyCharm中利用远程服务器的python解释器运行代码啦!再也不用忍受在黑框框中调试代码的痛苦了。(手动捂脸笑)
PyCharm配置远程python解释器可以实现:
可以指定本地某目录和服务器某工作目录对应起来,可以直接在本地机子上修改服务器工作目录下面的代码文件,即可以直接在IDE(如PyCharm)中修改服务端的代码,保持两处的代码同步修改。
为PyCharm配置远程python解释器,可以在本地的IDE中运行服务端的代码,并且可以在IDE中查看运行结果,不再需要shh连接到远程服务器执行代码。
为PyCharm配置远程python解释器时,同样可以指定某一conda虚拟环境,很方便呀。
配置过程
本地及服务器环境
本地:Windows 10 + PyCharm 2020专业版
服务器:Ubuntu 16.04 + Anacononda + 可以使用ssh进行远程登陆
配置Deployment
首先,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration.
点击左上角的加号,选择SFTP,新建一个server,例如这里我们取名为“dogVScat”。
然后可以看到如下的配置页面,具体各配置在图片中有说明:
然后打开Deployment的Mapping选项卡:
注:上面两张图画绿色下划线的地方,我想表达的是:我是将本地的G:\_Jeffrey\OneDrive\_Jeffrey\ResearchPhD\001 ResNotes\012 SCI_Res_Project\003 single_DRL_intersection_gymsumo\gym-sumo-DRL\intersectionDDPG目录和远程服务器的/home/node-3-3/Jeffrey/dogvscat目录连接起来,要实现这两个目录下的代码同步。
这样,Deployment的配置就完成了。这个配置完成了之后,其实是相当于配置了一个ftp工具可以连接到服务器上,从而可以查看和修改服务器上的文件。你可以通过Tools > Deplotment > Browse Remote Host来打开相应的RemoteHost面板,这个面板显示的就是服务器上的文件,显示的范围是你在Deployment中的Connection选项卡下配置的Root path路径下的文件及文件夹。如下图右侧所示。
你可以直接在RemoteHost面板里双击某个文件并且直接进行编辑。双击某个文件后你可以看到编辑区域的顶部有一个横条,并且横条的右边有三各按钮,分别是比较,撤销和上传操作。你在这里面编辑文件之后,可以直接点击上传按钮,就会提交到服务器了。但是其实不推荐直接在这里修改代码,后面的使用流程会说到。
配置远程python解释器
这里主要讲的是如何配置远程python解释器。
首先,通过File > Settings,打开设置选项卡。
在设置选项卡里,点击"Project:项目名"这个按钮,在展开的小项里再点击Project Interpreter,右边就会变成Interpreter的配置页面。
点击Interpreter配置页面的小此轮按钮,然后再选择Add或Add Remote。
在Add Python Interpretr窗口选择SHH Interpreter,选中Existing server configuration,在下拉框中选择我们刚才新建的dogVScat server。
点击next之后,出现如下对话框,按图示填写。
填写无误后,点Finish,大功告成,如下所示:
经过以上步骤,你的远程解释器就配置好了。这时,你就可以直接点击小三角按钮,调用远程服务器上的python解释器来运行代码了。
总结
通过上面的配置进行远程调试的话,我认为大致流程应该是下面这样:
在RemoteHost面板中,选中想要修改的代码,然后右键点击Download from here将内容下载至本地(这个本地是你在配置Deployment时设置的本地文件夹)。这一步一般没啥用。
在本地(这个本地是你在配置Deployment时设置的本地文件夹)修改你的代码,修改完成后在编辑区域或者文件名上右键,选择Deployment,再选择upload to…来上传到服务器。(其实经过上面的配置后,在ctrl+s保存本地代码的时候会自动同步上传代码)
在提交之后,你可以像普通调用本地解释器一样的直接运行本地的这个文件(但其实运行的是服务器的文件)
在这里,虽然RemoteHost里的文件可以直接编辑,但是并不建议这么做,因为这里编辑之后并不能直接运行。
注:配置方式不只一种,还有很多其它的配置方式也可以达到同样的目的,同时还有一些细节没有具体展开,有需要请自行google或参考References。
有问题欢迎交流~
References
个人调试
VPN需要挂,OpenVPN GUI
当前修改了远程服务器的地址可行。
其他需要参考可视化的教程:
使用MobaXterm做x shell服务,新建session后,使用命令echo $DISPLAY,将得到的结果例如localhost:11.0添加到pycharm的环境变量中。[如果不添加,那么将显示在远程服务器上,也挺好]
当遇到无法识别环境变量时,在edit configuration处添加:
SUMO_HOME
/home/ubuntu/data/sumo
PYTHONPATH
/home/ubuntu/data/sumo/tools:
【小问题大麻烦】其实前面的可以不用管,直接去添加python解释器就可以了,但是千万要注意的是每个解释器的pycharm_helpers的路径要不同,否则会冲突一直连不上ssh,此外要是出现断联情况,重新连接
总结:其实就是在win10上写代码,同步到服务器上,所以的地址,库等都是服务器上的