pycharm如何远程断点调试,ssh连接,自动同步代码
在python开发过程中,特别是类似爬虫这种,linux环境和win环境相差很大的这种情况,我们其实是很希望能在win电脑上,通过pycharm远程断点调试,linux服务器上运行的代码,并使用的是linux服务器的python解释器,还要是实际是在linux上运行的,这次它来了,跟着我逐步配置使用。也是躺坑过来的经验通过以上配置后,我就可以通过本地win电脑pycharm远程断点调试我linux
文章目录
前言
在python开发过程中,特别是类似爬虫这种,linux环境和win环境相差很大的这种情况,我们其实是很希望能在win电脑上,通过pycharm远程断点调试,linux服务器上运行的代码,并使用的是linux服务器的python解释器,还要是实际是在linux上运行的,这次它来了,跟着我逐步配置使用。也是躺坑过来的经验
通过SSH远端调试你的python项目
通过SSH登陆连接你的远端python解释器
-
找到settings——Project:your_project_name——Python interpreter,点击下拉框,点击“Show All”
-
点击左上角“+”号,点击On SSH
-
选择“Existing”,在点击“…”,打开SSH Configurations
-
在SSH Configurations中,先左上角点击“+”号,添加一个配置,然后右侧输入host,为你的远程服务器的host,然后对应的username和password,然后记得勾选上save password,不然重启pycharm会需要重新输入。然后点击“TestConnection”测试一下连接。确认连接正常后点击OK
-
随后页面直接点击Next会有提示,直接点击“Move”把配置移到IDE设置内即可,然后再点击Next
-
此时pycharm会自动测试一下连接是否能正常使用命令和相应权限情况,测试完后,点击Next即可。
-
随即选择“Virtualenv Environment”,勾选“Existing”,点击"…",然后选择你的需要项目运行的在linux上的python环境的路径,注意,如果是使用了conda之类的环境管理,一定要找到对应envs里的python环境,
选择你的远端服务器代码自动同步目录
- 点击Sync folders右侧的文件夹图标,打开目录选择框
注意这里是两个路径:
- Local Path是你项目的本地路径,到时候会自动同步这个路径下的项目文件到服务器对应的远端目录中,
- Remote Path是你远端服务器存放该项目的路径,我是创建了个路径,用的/home/python_debug,然后点击ok
- 在返回到之前配置页面后,确认一下路径,还有是否有勾选“Automatically upload project files to the server”这个很重要,这样可以在调试前,代码默认同步到我们指定的目录,确保了代码的一致性。随后点击“create”
测试和查看你是否配置成功
- 随后在Python interpreters页面就可以看到新加了一个Remote Python然后点击一下“Test Connection”,右侧出现Connected就表示连接上了。点击OK
- 查看一下解释器下的依赖库是否和线上的一致,抽查一些即可。
自此远程项目断点调试配置设置完成
开始你的远端断点调试
查看文件同步记录
在左侧File Transfer中,会有你本地代码同步到远端目录的记录,在初次完成配置会同步一次,随后每次运行代码前会同步
开始断点调试
通过console查看,所有的调试前,有一条指令
/root/miniconda3/envs/scrapyd/bin/python /root/.pycharm_helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client localhost --port 34434 --file /home/python_debug/debug.py
其中最重点的就是pydevd.py这个文件,顺便这里科普一下:
pydevd.py 是 PyDev 包中的一个 Python 调试器模块,用于支持 Python 代码的调试。PyDev 是一个开发工具,它提供了 Python 开发和调试的功能,通常与集成开发环境(IDE)一起使用,最常见的是与 Eclipse 集成。这个调试器模块负责启动调试器并与调试工具(如 PyCharm)建立通信,以便您可以在代码中设置断点、单步执行代码并查看变量的值,以帮助诊断和解决问题。
pydevd如果要自行去配置,会稍显复杂,这边通过pycharm完善的功能机制,就可以实现了这一点。
对于断点的情况,大家就自行测试吧。
验证是否运行在服务器的环境
一开始我是怀疑是否只是引用了服务器的解释器,但代码还只是本地运行,特此我做了个测试,也就是通过一个简单的ip地址访问,通过http://httpbin.org/get网站,查看运行后的反馈的ip是否为服务器的ip如果是,那么我就确认其是运行在服务器上面的。对此大家可以简单写个requests去测试,这边因为个人是scrapy的项目,用的是scrapy,对于简单测试有点繁琐,所以大家还是自行测试一下吧。
总结
-
通过以上配置后,我就可以通过本地win电脑pycharm远程断点调试我linux服务器上面的代码,并且代码是实时同步的。对于爬虫开发是非常方便的,因为我遇到的问题就是,国内ip无法使用国外代理,只能在服务器上面调试,但在linxu服务器上又没有桌面端,无法断点调试,只能多打印调试信息。对此,这个方法是非常实用的
-
另外,网上很多说还要配置Deployment那个东西,我一开始也是看了别人文章去配置的,但在你知晓原理后,其实根本没必要,有些文章就是喜欢做多余工作
项目代码自动同步
可以到linux服务器上面/home/python_debug目录,也就是上面我们刚设置的目录中查看相应的代码情况,代码都是自动同步上来的
另外,你还可以试试修改一下本地,然后启动一下调试,看看远端是否有实时同步
对于关闭远端调试
我个人是换了个python解释器就当关闭了
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)