最近在学习机器学习的过程当中,经常须要将本地写的代码传到GPU服务器中,而后在服务器上运行。以前的作法一直是先在本地写好代码,而后经过FileZilla这样的文件传输工具来将写好的文件传到服务器,再经过ssh工具远程链接到服务器,执行相应的python脚本。这样的方式十分繁琐,效率很低。今天听到朋友提到了配置远程解释器python
先说说本身的使用场景,我是在什么状况下,须要将IDE配置成这样的环境来方便个人工做。ubuntu
首先,我须要在本地机子上写python代码,可是由于是机器学习相关的一些代码,有时候本机跑可能会很慢,或者根本跑不下来。而此时,我还有一台可用的服务器,上面配置了相应的python3环境和相应的机器学习库,好比tensorflow,keras,tflearn等等。所以一般须要将本地写好的代码上传到服务器上,在服务器上运行。因为代码能力渣渣,因此经常须要反复修改代码,而直接在服务器上修改代码不是很方便。所以,我但愿能够像下面同样操做:服务器
操做系统:win10app
IDE:Pycharmssh
操做系统:ubuntu14.04机器学习
配置了ssh,可使用ssh进行远程登录工具
首先,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration.学习
而后能够看到以下的配置页面,具体各配置在图片中说明:spa
而后打开Deployment的Mapping选项卡:操作系统
这样,Deployment的配置就完成了。这个配置完成了以后,实际上是至关于配置了一个ftp工具能够链接到服务器上,从而能够查看和修改服务器上的文件。你能够经过Tools > Deplotment > Browse Remote Host来打开相应的RemoteHost面板,这个面板显示的就是服务器上的文件,显示的范围是你在Deployment中的Connection选项卡下配置的Root path路径下的文件及文件夹。
你能够直接在RemoteHost面板里双击某个文件而且直接进行编辑。双击某个文件后你能够看到编辑区域的顶部有一个横条,而且横条的右边有三各按钮,分别是比较,撤销和上传操做。你在这里面编辑文件以后,能够直接点击上传按钮,就会提交到服务器了。可是其实不推荐直接在这里修改代码,后面的使用流程会说到。
以上的配置,就能够直接在PyCharm里看到服务器上的文件,我感受就像是直接在IDE里集成了一个FTP传输工具。
这里主要讲的是如何配置远程python解释器。
首先,经过File > Settings,打开设置选项卡。
在设置选项卡里,点击"Project:项目名"这个按钮,在展开的小项里再点击Project Interpreter,右边就会变成Interpreter的配置页面。
点击Interpreter配置页面的小此轮按钮,而后再选择add Remote。
弹出以下弹窗并配置相应的信息。
通过以上步骤,你的远程解释器就配置好了。这时,你就能够直接点击小三角按钮,调用远程服务器上的python解释器来运行代码。可是在此,你还须要看看下面的使用流程。若是你直接双击RemoteHost面板里的文件,而后点击小三角运行是会报错的,可能会提示:
No such file or directory
在配置中也参考了不少其余文章,可是有些文章仍是没有讲清楚具体的流程,所以我把本身认为可能“正确”的流程记录一下。
在介绍Deployment配置的时候,咱们讲到了Mapping选项卡的配置。这个配置将本地的一个路径映射成了服务器上的一个路径,所以,在这个文件夹下的文件和服务器上的文件是同步的,固然,须要你在本地修改的时候upload到服务器或者设置自动upload。
在这里,个人mapping配置以下:
local path | Deployment path on server |
---|---|
E:\workspace\remotespace | xxxx/workspacexhh |
首先,咱们在pycharm中经过 File > open... 来打开一个新的项目,项目路径就选择上面的local path路径。
在Project窗口中就能够看到打开了这个项目,当前这个项目仍是空的,里面什么也没有。
而后,咱们打开RemoteHost小窗口,在test.py文件上右键,再选择Download from Here,文件就会下载到本地了。返回到Project小窗口,就能够看到test.py。其余的文件相似,若是有父目录,他会将父目录也一块儿下载下来,因此文件和路径都会和服务器保持一致。
这样,你就能够在本地编辑test.py文件。
在编辑完成后,你能够在文件上右键或者直接在编辑区域右键,选择upload to... 将文件上传到服务器,这样就能够更新服务器端的代码了,而且保持了和本地代码一致。
此时,点击绿色小三角运行代码,能够看到相应的输出。可是看看控制台的输出,能够发现,python解释器不是本地的,而跑的文件也不是本地。
上面就是整个从服务器下载文件至本地,在本地修改文件,将文件上传至服务器,而后直接在本地运行的整个过程。
在这个过程当中,也能够发现,通过这样的配置,咱们的代码如今一共有三个版本:一个是本地代码,一个是服务器上的代码,还有一个是RemoteHost面板中的代码(这个地方的代码若是直接编辑了,其实也能够提交到服务器,可是不能直接运行)
因此,若是经过上面的配置进行远程调试的话,我认为大体流程应该是下面这样:
在这里,虽然RemoteHost里的文件能够直接编辑,可是并不建议这么作,由于这里编辑以后并不能直接运行。