【问题标题】:How would I debug CKAN using a breakpoint based debugger in Visual Studio Code?如何在 Visual Studio Code 中使用基于断点的调试器调试 CKAN?
【发布时间】:2018-02-11 01:45:06
【问题描述】:

我是一位经验丰富的开发人员,最近刚刚通过 CKAN 作为入口点进入了 Python 开发世界。

到目前为止,我了解了非常简单的配置,比如运行单个 python 文件,设置断点,并等待它被命中。我可以遵循这么多,因为对我来说应用程序在哪里启动是显而易见的。使用 CKAN,我什至不确定从哪里运行调试器。

但是,当涉及到像 CKAN(或者可能像 Django 这样的其他系统)这样更广泛的系统时,我还不能完全弄清楚所有部分是如何组合在一起的。通常我会使用paster serve 启动一个开发服务器,它会在端口 5000 上运行一个网络服务器。使用这些知识作为基线,我可以采取哪些步骤来达到可以在扩展中放置断点的地步,启动CKAN,等待断点被命中,然后检查变量的当前值等等?

FWIW,我在 Ubuntu 14.04 的生产环境中运行 CKAN,并在虚拟环境中的 macOS 10.11 的开发环境中运行。

我觉得我面临的问题可能是因为 CKAN 的各种组件以及整个 python 对我来说似乎相当抽象,在更深层次上理解它们可能有助于我更好地推理堆栈。

【问题讨论】:

    标签: python django debugging visual-studio-code ckan


    【解决方案1】:

    经过一番搜索,我发现 CKAN 在幕后使用 PylonsFlask。这让我可以根据这些框架搜索其他调试配置。

    我最终使用的配置是这样的:

    "configurations": [
            {
                "name": "Python",
                "type": "python",
                "request": "launch",
                "stopOnEntry": false,
                "pythonPath": "${config:python.pythonPath}",
                "program": "${workspaceRoot}/bin/paster",
                "cwd": "${workspaceRoot}/src",
                "env": {},
                "envFile": "${workspaceRoot}/.env",
                "args": [
                    "serve",
                    "/etc/ckan/default/development.ini"
                ],
                "exceptionHandling": {
                    "ignore": ["ImportError"]
                }
            }]}

    pythonPath:指向 virtualenv 本地的 python 二进制文件

    program:指向粘贴脚本,它是 pylons 的 cli 和通常用于启动 CKAN 开发服务器的程序

    args:每个项目都可以被认为是连接字符串的一个组成部分,然后作为命令传递给“程序”。 “serve”是通常用于启动 ckan 开发服务器的 paste 命令,第二个参数是它需要作为 arg 的 CKAN 配置文件。

    这里没什么复杂的。

    感谢 byatool.com 的 Sean 提供的this article 帮助很大。

    【讨论】:

      猜你喜欢
      • 2019-03-19
      • 2016-12-27
      • 1970-01-01
      • 2018-11-27
      • 2019-03-09
      • 2015-12-18
      • 1970-01-01
      • 2020-05-09
      • 2019-05-18
      相关资源
      最近更新 更多