pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...

45b698b4fd75fb4a19cbd186ed56e683.png

作为实验室社畜,常需要在本地使用Pycharm写代码,然后将代码同步到服务器上,使用远程登录服务器并运行代码做实验。

这其中有很多事情如果没有好的工具,做起来会非常麻烦。

比如如何快速同步本地与服务器的代码?如何优雅地单步调试?等

如果你也感同身受,不妨看看这篇文章~

注:本人使用的PyCharm版本是2019.1.3,其他版本应该也类似


我们先使用PyCharm创建一个"demo"项目,不妨先创建一个test.py文件,写下测试代码:

import 

第一重境界 本地与远程代码同步

step 1. Tools --> Deployment --> Configuration...

fca9e4fdfaeceb99d72f3f9476acacec.png

step 2. + --> SFTP

5ca19310f4f7cbc1d4ad0c11afb4b0a2.png

并给远程server命名。

step 3. 填写红框中的内容

9346f4aa7c4fec7f40bb7e741c0d491c.png

可以点击Test Connection,测试是否可以连接成功。

Root path默认为/,你可以将其设置为你个人用户的根目录/home/xxx

Step 4. Mappings --> Local path / Deployment path

Local path表示项目本地目录

Deployment path表示项目对应的远程目录

63ca966524067009b7b418c08eb05ccb.png

step 5. Tools --> Deployment --> Browse Remote Host

可以在PyCharm内查看远程目录及文件

c9c83d6d4bfaea2be61d9ce305fc1a08.png

step 6. 配置完成,此时即可上传。

右键想要上传/同步的文件 --> Deployment --> Upload to server

快捷键:Shift + Ctrl + Alt + X

d5903c0c8469aa6ff61354454a646a57.png

可以设置:Tools --> Deployment --> Automatic Upload

实现一旦有改动,自动上传同步到远程

309ca88a57ec12c9f53d11e27e2019ee.png

第二重境界 本地与远程代码同步,本地debug

现在我们已经可以在本地PyCharm写代码,然后优雅地上传同步到远程了。
然而我们运行代码还是得另外使用远程登录软件(比如XShell),远程登录后运行上传地代码。
我们可以直接在PyCharm内部使用 远程的Python环境来运行本地的代码啊,甚至还可以直接单步调试本地的代码。

step 1. File -> Settings -> (根据个人实际pycharm项目名,这里是Project: demo)--> Project Interpreter --> add remote path

be2e88cc5fa8f77e1ef41d2d05ec87a1.png

1bb9510817f89d9697a838d48cde3190.png

c9b5aaaf2412712ab8595f31b37c6e1c.png

点击Next

选择Interpreter,不选择会使用系统默认

Sync folders:选择对应的远程同步目录即可(也就是我们刚刚上传的那个Deployment path

b2306e7beaa22f3de33503b52ac4e1ff.png

最后,别忘了点击Apply

step 2. 设置Terminal中的Python环境:File --> Settings --> Tools -> SSH Terminal

be2e88cc5fa8f77e1ef41d2d05ec87a1.png

fc4337da66cf928b21c8aff17fe94684.png

--> Apply --> OK

step 3. Tools-->Start SSH Session可打开远程命令行界面

e18736b3bbadd428a921b7e2e6017352.png

step 4. 右上角Add Configuration...,填写Script path,Parameters和Python interpreter等参数:

Script path:待执行脚本位置

Parameters:脚本运行参数,比如在深度学习实验中我们常会设置--gpu 1 --batch_size 32 --phase train等

Python Interpreter:这就是我们在step1中配置的远程Python环境

214291ed13c5d5fb6a216d6911ddef7e.png

step 5. 大功告成。我们可以使用远程Python环境在本地运行/debug自己的代码了。

6fca4b8837016f73411179be453c9658.png

还有个小问题:

我们点击运行后,会看到:

8c9634aa8cc2e74a50870800247d272b.png

还记得上面这张图吗?

b2306e7beaa22f3de33503b52ac4e1ff.png

所以PyCharm实际上就是将你要运行的代码上传到了你设置的/home/<your username>/tmp/pycharm_project_46(你写的是/tmp/pycharm_project_46,会自动加上/home/<your username>前缀),然后在远程运行对应的代码文件,将结果返回。

第三重境界 本地与远程代码同步,远程debug

事情似乎圆满解决了?显然还没有!
以上方式似乎可以近似调试远程的代码了,但是还是会有问题!
比如在深度学习实验中,我们常常需要输入大规模的数据,而这些数据都是存在服务器上的!用以上方法显然不太能很优雅地解决这种导入数据集的路径问题。
这可怎么办呢???
我们最理想的状态就是:在服务器上运行代码,然后在本地单步调试。
这个可以做到吗?当然可以!

step 1. 在服务器上安装pydevd:pip install pydevd-pycharm~=192.6817.19(这与PyCharm的版本相关,你需要参考你自己的版本)

step 2. 将以下代码加入到远程服务器的主入口py文件中:

注意:111.111.111.111是本地计算机的ip,服务器需要能够访问到本地计算机。端口号选择一个10000以上的,比如这里的31235

import 

因此test.py代码修改为:

import 

别忘了将代码修改同步更新到远程!

step 3. 右上角 --> Edit Configurations --> + --> Python Renote Debug

c249eec12f94ea00466a0c49c108f766.png

和刚刚一样,填上Name, Local host name, Port等

注:这里会有简单的教程,提示你应该在远程服务器上安装哪个版本的pydevd

2c6498439ce11eb51ad215a556a66525.png

step 4. 在本地设置好断点,点击调试,等待。

d11d867ccf7956c5c03ecf86c6e119ea.png

step 5. 在xshell中登录服务器运行主入口程序py文件,便会将请求转到本地的pycharm中,遇到断点便会停止,可以调试了!

我们这里是进入demo目录下输入python test.py

另外:可能会遇到在本地找不到匹配py文件的情况:

e9032f2b492d3f0373f305eea3c05604.png

点击auto-detect,选择对应的py文件就可以了!

大功告成!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值