使用 PyCharm 远程调试 Django 程序「建议收藏」

使用 PyCharm 远程调试 Django 程序「建议收藏」这阵子组内流行使用Django写管理端程序。大家习惯了在Windows上使用PyCharm等IDE快速方便地进行开发,但是由于管理端使用了一些公司的公共组件,而这些组件又只提供了Linux上的Python接口,因此必须在Linux上运行Django程序。值得庆幸的是,大多数的IDE都提供了远程调试功能,PyCharm也可以经过简单配置进行远程调试。场

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

这阵子组内流行使用 Django 写管理端程序。大家习惯了在 Windows 上使用 PyCharm 等 IDE 快速方便地进行开发,但是由于管理端使用了一些公司的公共组件,而这些组件又只提供了 Linux 上的 Python 接口,因此必须在 Linux 上运行 Django 程序。值得庆幸的是,大多数的 IDE 都提供了远程调试功能, PyCharm 也可以经过简单配置进行远程调试。

场景

  1. 一台装有 PyCharm (这里使用的是 PyCharm 3.4) 的 Windows / Mac 机器
  2. 一台装有 Python 2.7 的 Linux 机器,可以与 Windows 机器相互通信,将会用来执行 Django 程序

配置远程 Python 解释器

  1. 在 PyCharm 中打开 Python 解释器的设置面板,路径为 File => Settings (Ctrl+Alt+S) => Python Interpreter:

    使用 PyCharm 远程调试 Django 程序「建议收藏」

  2. 点击右上角齿轮,Add Remote,填写 SSH 相关的设置

    使用 PyCharm 远程调试 Django 程序「建议收藏」

  3. 点击 OK

第 3 步做完后可能需要等一些时间。这个过程中 PyCharm 会将一些工具和调试 Server 发到你配置的 .pycharm_helper 目录中,并且对机器上已经安装的库类生成 skeletons,并传回 Windows 上进行保存。Python skeletons 是一些包括库类 API 定义的文件,用来给 PyCharm 做代码静态分析。JetBrains 的帮助文档提供了更详细的说明,参见 Important Note 一节。

最后,你需要在解释器设置面板,选中 Remote Interpreter 做为项目的默认解释器。

配置部署信息

在 PyCharm 中打开部署的设置面板,路径为 Tool => Deployment => Configuration。

这里的填写内容基本跟配置 Python 解释器一处类似。Type 建议选择 SFTP,常见的 OpenSSH Server 提供了这种协议的支持。

第二个 Tab (Mappings) 需要填写部署的路径,注意这个路径对应你项目的根目录,所以你很可能需要为它建一个空文件夹。勾选上 “Use this server as default”。除此之外还有个 Web path 的设置,应该是用来配置网页上查看文件的服务,可以无视。

配置好部署面板后,建议把自动同步开启 (Tool => Deployment => Automatics Upload(always)),这样在 PyCharm 中对文件进行修改,可以马上同步到 Linux 上。同时建议先做一次同步。同步可以通过很多方式完成,比如在 Project 面板 (Alt+1) 上对项目根目录右键 “Upload to”,也可以在菜单中上传 (Tool => Deployment => Upload to)。如果菜单中 Upload to 不可点击,请尝试打开项目的一个 py 文件,并把焦点放在编辑器中。

配置运行配置

在 PyCharm 中打开运行配置面板,路径为 Run => Run/Debug Configurations:

使用 PyCharm 远程调试 Django 程序「建议收藏」

如果你发现你的运行配置中没有 Django 相关的项,请在项目设置的 Django 中勾选 Enable Django Support。

运行配置的设置有两点需要注意。Python Interpreter 需要选中之前建立的远程解释器。Path mappings 处,需要把本机的 manage.py 与 Linux 上的关联起来,比如:

C:/Evolution/Python/django_website/manage.py <=> /home/onlyice/work/django_website/manage.py

这可能是 PyCharm 的 bug。在使用远程解释器后,PyCharm 并不会自动将 Django 运行配置中的 manage.py 文件定位到 Linux 上的那份,而是会尝试使用下面的命令来启动 Django 调试 Server:

/usr/bin/python2 manage.py C:/Evolution/Python/django_website/manage.py

自然就找不到文件了。所以使用了 Path mappings 作为一种 hack 手段来解决。

P.S. PyCharm 提供的 Remote Debugging 指南相对比较繁琐,并没有仔细尝试,如果你发现有更好的办法进行远程调试请告知我。

这个时候就可以打打断点试试能不能调试啦~~

使用 PyCharm 远程调试 Django 程序「建议收藏」

Trouble Shooting

Q: 点击调试运行失败,显示 “Cant set remote tunneling”

A: 调试时 PyCharm 调用将 Python Debug Server (pydevd.py) 绑定在一个随机端口上,再使用 SSH 的端口转发将数据通过 SSH 端口转到 Debug Server 去。需要检查你的 sshd 配置 (默认是 /etc/ssh/sshd_config) 是否禁用了 TCP 转发 (AllowTcpFowarding),这个配置默认是打开的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175187.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gcc编译链中i686和x86-64有什么区别?

    gcc编译链中i686和x86-64有什么区别?个人记录,请不要当成事实!!暂时理解成:来自网络1、i686和x86_64有什么不同?2、linux系统中的i386/i686和x86_64有什么区别回答i386对应的是32位系统、而i686是i386的一个子集,i686仅对应P6及以上级别的CPU,i386则广泛适用于80386以上的各种CPU;x86_64主要是64位系统。i686在pentun…

    2022年6月7日
    86
  • pcie和minipcie区别_minipcie接口定义

    pcie和minipcie区别_minipcie接口定义1,产品介绍:MCIeCAN系列miniPCIe接口CAN卡,具有1~2路CAN通道和一路PCIExpressmini接口,插到工控机或单板电脑的PCIExpressmini卡槽上,快速扩展出1~2路CAN通道。CAN接口电气隔离高达2500VDC,具有优秀的EMC性能,可靠性测试项目:ESD接触放电8KV、浪涌±1KV、脉冲群±2KV,工业级,通过CE-EMC和FCC认证。,2,配套功能配套测试软件LCANTest使用,接收、发送、查看、分析、记录、回放CAN报文;配套丰富驱动;配套包含库函数、

    2022年9月5日
    2
  • IK分词源码讲解(七)-TokenStream以及incrementToken属性处理「建议收藏」

    IK分词源码讲解(七)-TokenStream以及incrementToken属性处理「建议收藏」首先介绍下在lucene中attributeSource的类层次:org.apache.lucene.util.AttributeSource·        org.apache.lucene.analysis.TokenStream (implementsjava.io.Closeable)·        org.apache.lucene.analysis.NumericTok

    2022年7月22日
    8
  • IDEA优化导包配置[通俗易懂]

    IDEA优化导包配置[通俗易懂]

    2022年5月21日
    39
  • IAAS云平台搭建详细步骤(云平台openstack)

    先电云iaas(openstack)搭建(一)这里我们首先进行基本环境的配置和安装。由于整个iaas完整安装过程内容过多,我这里将分步进行为了方便操作和更直观的观察我这里包括后续步骤主要使用图片进行操作密码设置000000输入法设置为英文所需环境:virtualbox6.0centos-1511.isoxiandian-iaas.iso…

    2022年4月9日
    73
  • python敏感词过滤代码简单(敏感词匹配算法)

    今天游戏正好用到需要过滤敏感词将出现的敏感词替换成*,在网上找了许久找了一片可用的java版本的DFA算法,最后费了一番功夫将其思路用C#实现,里面的注释甚至都没改动的,这里直接上代码,这里不借助任何第三方工具,复制粘贴就是用当然想看原博客的点击这里usingUnityEngine;usingSystem.Collections.Generic;publicclassTes…

    2022年4月17日
    158

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号