Pycharm配置远程调试的方法步骤

yipeiwu_com6年前Python基础

动机

  • 一些bug由于本地环境和线上环境的不一致可能导致本地无法复现
  • 本地依赖和线上依赖版本不一致也可以导致一些问题
  • 有时一些bug跟数据相关,本地数据无法和线上数据一致
  • 有些三方平台会验证服务器的合法性或者异步回调结果,如微信支付,这时候本地无法测试

如上所诉,要是有一个很方便调试远程服务器的方法,岂不美哉。通过PyCharm我们可以很方便地实现远程调试,下面详细介绍下PyCharm这个牛叉的功能。

使用远程解释器

默认情况下我们在本地开发Python程序时,使用的是本地的Python解释器,如果你安装了virtualenv或者pyenv的话,还可以选择这些虚拟环境。而使用Pycharm的专业版,则还可以选择使用远程Linux机器上的解释器。下面就来介绍下使用远程解释器的步骤。

添加远程部署

打开pycharm,tools-->Deployment-->Configuration

点击左边“+”添加远程服务器,随便起个名字,选择SFTP

配置connection

配置Mappings

配置Excluded Paths(可选)

最后点击OK即可

再次打开部署选项,可以发现现在可以直接部署代码到服务器了,也可以直接下载带代码到本地,同时自动上传(Automatic Upload)是默认勾选的,我一般会把它去掉,防止一些本地测试代码上传上去

新增一个文件,查看deployment 选项,这时候就可以上传到远程服务器了

添加远程解释器

远程部署仅仅只是同步和拷贝文件,要真正实现远程调试还需要配置远程解释器

设置页面找到“Project Interpreter” --> 设置-->Add

选择“SSH Interpreter” --> "Existing server configuration" --> 选择刚才创建的部署配置,使用‘'Create“或者”Move“ 都OK

点击下一步,这时会进行连接远程服务器,稍等一会,会出现以下界面,稍微配置下,点击“Finish”即可

最后使用远程解释器,点击“OK”,返回到项目界面,等待同步完成即可

远程调试

这里根据自己的具体项目情况而定,我这里是 Flask+阿里云+nginx+运行脚本 的一个例子

新增一个 run configuration

运行脚本代码如下,这里使用了8000的端口

Host要配置为0.0.0.0

nginx 配置8000 端口

 server {
  listen  8000 ;
  listen  [::]:8000 ;
  server_name _;
  root   /usr/share/nginx/html;
  access_log /var/log/nginx/access_8000.log main;
  error_log /var/log/nginx/error_8000.log;

  # Load configuration files for the default server block.
  include /etc/nginx/default.d/*.conf;
  location / {
		proxy_pass http://127.0.0.1:8000;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  error_page 404 /404.html;
   location = /40x.html {
  }

  error_page 500 502 503 504 /50x.html;
   location = /50x.html {
  }
 }

要是使用阿里云,还需要安全组开放8000 端口 断点运行

出现上图所示的时候,恭喜你,你已经可以断点调试远程服务器了

我们打一个断点,然后试着访问一个API服务: xx.xx.xx.xx:8000/api/pages/b…

完美断上

补充说明

不建议在正式服务器使用这个功能,可以在测试服务器使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

使用Python的networkx绘制精美网络图教程

使用Python的networkx绘制精美网络图教程

最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图。在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://netwo...

Python写的贪吃蛇游戏例子

第一次用Python写这种比较实用且好玩的东西,权当练手吧 游戏说明: * P键控制“暂停/开始”* 方向键控制贪吃蛇的方向 源代码如下:复制代码 代码如下:from Tkinter i...

Python脚本操作Excel实现批量替换功能

Python脚本操作Excel实现批量替换功能

大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。 使用的工具 Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook...

python中关于for循环的碎碎念

为什么要挑战自己在代码里不写for loop?因为这样可以迫使你去使用比较高级、地道的语法或库。文中以python为例子,讲了不少大家其实在别人的代码里都见过、但自己很少用的语法。 这是...

python错误处理详解

在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成...