【发布时间】:2016-07-03 16:42:45
【问题描述】:
我的设置如下: - 在 docker 中运行的 django 服务器,端口映射:8090:8090 - 带有 PyDev 的 Eclipse
我希望能够在 Pydev 上放断点(点击一行,一步一步)
我发现了几篇类似的文章; http://www.pydev.org/manual_adv_remote_debugger.html
但它仍然无法正常工作。
1) 我应该将 manage.py 更新为 "import pydev" 吗?要添加哪些行,我必须在 docker 容器内复制 pydev 插件的 pysrc 才能进行模块导入?
2) 是否需要端口转发?运行到 docker 中的 python 实例应该可以访问主机上的远程调试服务器?
3) 我找到了关于 pycharm 和使用 ssh 进行远程调试的文章?不能用 pydev 做类似的事情吗?
4) 如何“链接”我的本地目录和 docker “目录”?
[编辑] 我找到了解决方案
将 eclipse/path_to\pydev\plugins\org.python.pydev\pysrc 目录复制到 docker 容器可以访问的地方。
编辑 pysrc/pydevd_file_utils.py,并在主机和 docker 容器之间添加目录映射,例如: PATHS_FROM_ECLIPSE_TO_PYTHON = [(r'C:/django',r'/.../lib/django'), (r'C:/workspace/myapp',r'/var/www/myapp')] 如果您有多个包含 python 代码的路径,则可以设置多个元组
-
编辑 manage.py 并添加以下内容
sys.path.append('/my_path/to_pysrc_/under_docker/pysrc') 导入 pydevd pydevd.settrace(host='172.17.42.1') #你主机的IP
在 Pydev 中,在首选项 > Pydev > 运行/调试 > 远程调试器端口:5678
在Debug Perspective中,点击“Start the Pydev server”
-
在你的 docker 中,运行:python manage.py runserver 0.0.0.0:8090 --noreload
(将 8090 替换为您的 http 端口)
在 Pydev 中:你会看到代码在 settrace 之后就中断了!
现在您可以添加一些断点并使用 Pydev 的调试 CLI :) 享受吧!
【问题讨论】:
-
其实你可以跳过一些步骤...我会在不久的将来发布一个简化的答案。无论如何,感谢您的问题/回答对您有很大帮助!
标签: django docker debugging pydev remote-debugging