我是一个相当有经验的开发人员,最近才通过CKAN进入Python开发世界。
到目前为止,我了解非常简单的配置,例如运行单个python文件,设置断点并等待命中。我可以遵循的步骤很多,因为对于我来说,应用程序的启动位置很明显。使用CKAN,我不确定从哪里运行调试器。
但是,当涉及到更广泛的系统(例如CKAN(或其他类似Django的系统))时,我还无法完全弄清楚各个部分是如何组合在一起的。通常,我将使用paster serve
启动开发服务器,并且该服务器将在端口5000上运行网络服务器。以此知识为基准,我应该采取什么步骤才能在扩展中放置断点,启动CKAN,等待命中断点,然后检查变量的当前值等等?
FWIW,我正在Ubuntu 14.04上的生产环境中以及在virtualenv中的macOS 10.11上的开发环境中运行CKAN。
我觉得我面临的问题可能是因为CKAN的各个组件以及整个python对我来说似乎很抽象,更深入地了解它们可能有助于我更好地思考堆栈。
最佳答案
经过一番搜索,我发现CKAN在幕后使用Pylons和Flask。这使我可以根据这些框架搜索其他调试配置。
我最终使用的配置是这样的:
"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/