Pycharm远程开发教程
最近项目中使用到了Pycharm的远程开发,记录一下具体的使用方式,本文涉及到的操作均为Pycharm专业版(环境为Win10和Ubuntu16),社区版功能是否这么丰富我不确定,使用学生邮箱(
.edu后缀)注册Jetbrains的账号可以免费使用Pycharm专业版。
使用场景
往往,算力强大的GPU服务器是没有图形化界面的或者图形界面很不方便,我们习惯在自己的机器上编写代码,然后在服务器上运行程序。在过去,这种需求我是通过ssh远程连接后文件传输,然后通过命令行执行脚本实现的。显然,这种稍微改动就要进行一次文件传输的方法,略显低效,作为一个全能IDE,Pycharm为开发者提供了方便的远程开发功能,包括文件修改的自动同步、远程使用解释器等功能。
远程解释器
曾经的Pycharm只支持远程同步文件,这部分功能由导航栏Tools->Deployment模块设置,不过,现在,Pycharm也支持只配置远程解释器,也就是说,我可以通过远程解释器执行我写的Python脚本,然后运行结果在本地显示出来,这样对本地开发用机器的算力要求就会很低。
下面,我们来看如何配置远程解释器,我这边以一个已经写完的项目为例。
首先,我们在Pycharm界面中点击左上角的File选项卡,然后选择Settings进入设置页面,找到如上图所示的解释器配置页面,然后点击添加解释器(Python通过解释器来定位不同的Python虚拟环境)。
接着,选择SSH Interpreter来添加远程解释器,配置如上图,依次填入服务器的IP地址、端口(Pycharm的远程均依赖SSH服务,所以端口为22,务必保证远程SSH服务打开)和登录用的用户名。
随后,点击Next通过上述的用户名对应的密码或者**登录远程服务器(我这里使用的密码)。继续点击Next之后,如果密码正确,就能访问到下面这个页面,此时会默认定位系统的Python解释器,请手动找到自己需要的环境的解释器(我这里使用的是一个conda虚拟环境)。
上图中,下半部分是远程文件同步的相关配置,下文会讲到这部分的细节,这里可以快速配置,配置后的效果就是当本地文件修改时,Pycharm会自动即将修改同步到远程服务器上,保证两边文件一致,从而不需要自己麻烦地在每次修改本地文件后手动进行文件传输了。
我们要做的操作就是上图中Sync folders点击右侧的小图标,可以看到,默认将远程项目映射到了一个临时文件夹中,一般我们不会这么做,而是在自己的家目录创建项目文件夹(如果已经有这个文件夹则直接指定即可)用于同步。我这边在家目录下创建了一个空文件夹用于项目的同步,配置好之后下面的Automatically upload可以勾选上,该功能表示本地修改后,自动同步到远程服务器。
上面的操作之后点击Finish然后点击Ok就将远程服务器创建完成了。不过,如果你是采用我这种方法,此时应该会报一个"No files or folders found to process",这是什么问题我们会在下面具体描述和解决。
远程文件同步
上面的远程解释器配置完成后(这里其实远程解释器已经配置完成了,之所以无法正常运行是文件同步的问题),会出现上一节最后出现的错误,此时本地右击任意脚本执行,会出现类似下面的报错,意思很明显,无法打开远程服务器的该脚本文件。
首先,我必须解释一下,这里的远程解释器是如何执行本地脚本的,不然后面不容易讲明白。其实,通过文件同步,本地脚本被实时传输到了远程服务器,由于已经做了文件同步,所以文件映射已经建立完成,当你执行本地这个脚本的时候,其实是远程解释器执行远程服务器里那个同步过去的脚本,再把执行的命令行结果传输到本地而已。
现在,我们通过导航栏的Tools->Deployment->Browse Remote Host打开远程服务器可视化文件界面,找到我们文件同步时设置的远程服务器上项目对应的文件夹,会看到什么也没有同步过去,这就是文件同步配置失败了,这里重新配置一下。
注意,**文件同步涉及到的所有配置都在导航栏的Tools->Deployment下,当我们只需要文件同步而不需要远程解释器的时候在这里配置就行。**我们打开Deployment中的Configuration,确认Connection配置无误的情况下切换到Mappings选项卡重新配置远程文件夹。配置后,右击项目根目录,依次选择Deployment->Upload to ...即可,此时就会发现同步成功。
此时再次执行脚本,就会成功,下图其实运行已经成功了,报错是因为脚本逻辑有问题。
有时候有需要自动创建文件夹的时候,可以把Options中的create empty directories开下来。
至此,文件同步也讲完了,更多时候,在一个新项目中远程解释器已经配置完成或者不需要配置远程解释器只需要配置文件同步,安装上面的配置也能完成。
补充说明
本文按照个人需求讲解了如何通过Pycharm实现远程开发,如果有问题,欢迎评论咨询,如果文章对你有所帮助,欢迎点赞收藏。