我是一个相当有经验的开发人员,最近才通过CKAN进入Python开发世界。

到目前为止,我了解非常简单的配置,例如运行单个python文件,设置断点并等待命中。我可以遵循的步骤很多,因为对于我来说,应用程序的启动位置很明显。使用CKAN,我不确定从哪里运行调试器。

但是,当涉及到更广泛的系统(例如CKAN(或其他类似Django的系统))时,我还无法完全弄清楚各个部分是如何组合在一起的。通常,我将使用paster serve启动开发服务器,并且该服务器将在端口5000上运行网络服务器。以此知识为基准,我应该采取什么步骤才能在扩展中放置断点,启动CKAN,等待命中断点,然后检查变量的当前值等等?

FWIW,我正在Ubuntu 14.04上的生产环境中以及在virtualenv中的macOS 10.11上的开发环境中运行CKAN。

我觉得我面临的问题可能是因为CKAN的各个组件以及整个python对我来说似乎很抽象,更深入地了解它们可能有助于我更好地思考堆栈。

最佳答案

经过一番搜索,我发现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二进制文件

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

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

这里没有什么复杂的事情。

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

关于python - 如何在Visual Studio Code中使用基于断点的调试器调试CKAN?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46009627/

10-12 22:50