python远程调试

本介绍了使用PyCharm进行远程debug的方法,实现本地写代码,远程服务器训练模型和调试代码的功能。

有这么一个应用场景,你的代码需要在服务器端运行,因为运行环境安装的依赖库都在远端服务器上,而写代码的工作在本地的平台上更顺手。在此之前都是用Visual Studio Code编辑代码,然后用同步到远端服务器,再通过SSH登录服务器运行程序。这样的工作流程不仅效率低,容易出错(如果代码没同步就悲剧),而且不易debug。

难道没有一个IDE能够实现远程运行调试代码么?本着世界上比我聪明的人多了去了的原则,本人觉得一定有,但是一直没找到。直到今天偶然发现PyCharm支持远程debug,看了下网上的教程发现跟我的需求很像,于是折腾了一番,没想到真的成功了。

我的本地环境:

  • ubuntu 16.04
  • PyCharm Professional

 

准备工作

 

首先你需要安装PyCharm Professional版,Community版是没有远程调试功能的,如果你是学生可以通过学校的edu邮箱申请免费试用,如果不是请购买正版。

PyCharm下载地址: https://www.jetbrains.com/pycharm

安装过程很简单这里就不赘述了,安装流程下一步下一步即可。

 

准备:

一台装有程序运行环境的服务器并开启ssh服务.可以用本地terminal 通过ssh登录服务器验证.

远程服务器同步配置

  • 首先本地代码放在:F:\Code\Sync\Detectron
  • 服务器代码路径在:/home/xuzhewei/code/Detectron

打开PyCharm,打开Project文件夹F:\Code\Sync\Detectron

v2-8253cfdaf3b6ce2c8902aeab7e8d3d82_hd.jpg

 

首先在Tools>Deployment>Configuration配置远程服务器地址:

  • SFTP host: 是你服务器的地址
  • Port: 是端口号
  • Root Path: 是远程你期望存放代码的位置
  • User name: 是远程服务的登录用户名
  • Password: 远程服务器的登录密码

v2-f95953d595e685711e697d318196baed_hd.jpg

 

切换到Mappings标签页

  • Local path: 本地代码存放位置
  • Deployment path on server Detectron: 服务器端存放Detectron的位置
  • Web ...: 这个我们用不上,是web项目需要配置

 

如果你还有一些文件或文件夹不想同步,那么在配置对话框的第三个tab页Excluded path里面添加即可,可同时指定本地和远程。

v2-153d5a9cbaa9b9c6d9f6d12cb2a413d7_hd.jpg

上传下载文件

手动上传方式很简单,选择需要同步的文件或文件夹(注意,要选择整个项目,要选中最外层目录然后点击upload,否则只会上传当前选中的文件.),然后选择 Tools>Deployment>Upload to Detectron(这个是刚刚配置的部署名称)

v2-a08885323195700263bb457f2f8b84c2_hd.jpg

比较远程和本地文件

有时候你并不确定远程和本地版本的完全一致,需要去比较看看。PyCharm提供了对比视图来为你解决这个问题。

选择Tools>Deployment>Browse Remote Host,打开远程文件视图,在右侧窗口就能看到远程主机中的文件

v2-c415d80cb97bdbafd65149beae28641d_hd.jpg

选择一个你想要对比的文件夹,点击右键->Sync with Deployed to Detectron,打开同步对比窗口,使用左右箭头来同步内容。

v2-ec4ba450de4b21a58ed36f6c859183a1_hd.jpg

v2-1ae66b6cce18ba6eaf7bff6726c4d57f_hd.jpg

PyCharm  选择远程调试器

选择File>Settings>Project>Project Interpreter,然后在右边,点击那个小齿轮设置,如下

v2-dca6750ba2cc4a20e917f4df98210465_hd.jpg

 

然后点击Add Remote选择刚才创建的deployment配置(Detectron),并配置解释器路径.

然后设置你的Python Interpreter,就是你在服务器端运行的python的位置,这里默认是系统python,但是我采用的anaconda的虚拟python环境因此这里的

  • Interpreter地址为 /home/all/lib/anaconda2/envs/caffe2/bin/python
  • Sync folders是服务器上代码放置的地址

远程调试

首先验证在服务器上运行测试代码可以成功运行

cd ~/code/Detectron
python tests/test_spatial_narrow_as_op.py

输出

No handlers could be found for logger "caffe2.python.net_drawer"
net_drawer will not run correctly. Please install the correct dependencies.
E0531 15:09:45.234580  5116 init_intrinsics_check.cc:59] CPU feature avx is present on your machine, but the Caffe2 binary is not compiled with it. It means you may not get the full speed of your CPU.
E0531 15:09:45.234616  5116 init_intrinsics_check.cc:59] CPU feature avx2 is present on your machine, but the Caffe2 binary is not compiled with it. It means you may not get the full speed of your CPU.
E0531 15:09:45.234625  5116 init_intrinsics_check.cc:59] CPU feature fma is present on your machine, but the Caffe2 binary is not compiled with it. It means you may not get the full speed of your CPU.
Found Detectron ops lib: /usr/local/lib/libcaffe2_detectron_ops_gpu.so
...
----------------------------------------------------------------------
Ran 3 tests in 3.146s

OK

 

然后尝试在PyCharm远程调试

v2-9b07536b72ad77432492a3a2886c2d89_hd.jpg

然后注意不要用py.test,应直接用python运行

 

 

 

输出结果和在SSH里显示的一样

 

 

参考教程:https://www.xncoding.com/2016/05/26/python/pycharm-remote.html

参考教程:https://zhuanlan.zhihu.com/p/38591832

 
 

 

 

转载于:https://my.oschina.net/u/3425794/blog/3052392

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值