使用 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java工程师笔试面试题[通俗易懂]

    java工程师笔试面试题[通俗易懂]1.J2EE是什么?它包括哪些技术?解答:从整体上讲,J2EE是使用Java技术开发企业级应用的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。主要包括以下这些技术:1)Ser

    2022年7月11日
    15
  • idea激活码在哪输入(注册激活)「建议收藏」

    (idea激活码在哪输入)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月26日
    567
  • encode和decode的区别 java_inputstream读取文件

    encode和decode的区别 java_inputstream读取文件encode()和decode()decode英文意思是解码,encode英文原意编码字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.d…

    2022年9月28日
    2
  • html中滚动条的代码是什么?如何设置html滚动条?

    html中滚动条的代码是什么?如何设置html滚动条?本篇文章主要介绍了关于 html 中的滚动条的代码 还有关于 html 滚动条代码 marquee 标签属性的用法 具体的让我们一起来看这篇文章吧首先我们介绍 html 中的滚动条代码 今天我们介绍这个 html 滚动条标签是 marquee marquee 标签 它是成对出现的标签 首标签 marquee 和尾标签 marquee 之间的内容就是滚动内容 marquee 标签的属性主要有 behavior bgcolor direction width height marquee marquee

    2025年7月7日
    2
  • QQ图片制作跳转_我要自己制作头像

    QQ图片制作跳转_我要自己制作头像QQ图片跳转加群QQ群里看到一个好像视频的图片,点开却变成一个加群的链接,直接到了这是QQ里的一种插件,类似QQ群机器人,只不过现在很难能找到了,去年有段时间很火,使用插件生成以后发到群内或者QQ聊天内,可以自定义图片和超链接,点击可以跳转图片只是一个预览而已,因为现在的扣扣发网址会自动加载页面的内容预览出来就是一个图片,这个图片是网站制作人员事先设置好的,类似文档的预览图也就是脸面。比如你你发一个加群的链接到群里,然后系统自动加载网页,顺便脸面图片也显示出来了。你点击图片后当然就跳转到加群

    2022年8月10日
    7
  • Java知多少(53)使用Java创建自己的异常子类

    Java知多少(53)使用Java创建自己的异常子类

    2021年9月6日
    63

发表回复

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

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