Python PyCharm docker调试错误

Python PyCharm docker调试错误,python,django,debugging,docker,pycharm,Python,Django,Debugging,Docker,Pycharm,请参见编辑 我正在尝试获取PyCharm的最新版本,以成功调试Docker内部运行的Django。但是,我在设置远程python解释器时遇到了问题,并且在尝试启动调试器时,我立即出现了一个错误 无法运行远程python解释器:com.github.dockerjava.api.exception.InternalServerErrorException:{“消息”:“工作目录'C:/Program Files(x86)/JetBrains/PyCharm 171.2613.10/jre64/jr

请参见编辑

我正在尝试获取PyCharm的最新版本,以成功调试Docker内部运行的Django。但是,我在设置远程python解释器时遇到了问题,并且在尝试启动调试器时,我立即出现了一个错误

无法运行远程python解释器:com.github.dockerjava.api.exception.InternalServerErrorException:{“消息”:“工作目录'C:/Program Files(x86)/JetBrains/PyCharm 171.2613.10/jre64/jre/bin'无效,需要是绝对路径”}

在我看来,这条路是绝对的,所以我猜是另外一条路。我甚至不确定是谁或什么原因导致了这个错误。docker容器(由于JSON响应)或PyCharm

跑步
  • PyCharm 2017.1
  • Docker for Windows(Docker版本1.13.0)
有没有想过我可能会错过什么/有什么问题

编辑 忘了在如何设置远程解释器时包含PyCharm中的设置

以上设置没有错误

编辑2 看起来“Django项目根目录”被意外设置为上面的错误路径。这是固定的。我现在的问题是,当我运行run/Debug配置时,它会尝试再次启动服务器,而服务器已经在docker容器中运行。是否没有办法附加到已经运行的python进程

编辑3 现在,在启动调试器(PyCharms-Python远程调试器)并在之后启动服务器时,我成功地获得了一条“success”消息。但是,调试程序似乎在1秒(或更短)后停止侦听。我的理论是,调试器在通过
pydevd.settrace()
函数调用后会断开连接。我已经在
manage.py
的底部放置了以下代码(位于头顶):

sys.path.append('pycharm-debug.egg')
import pydevd
pydevd.settrace('192.168.1.100', port=21000)
我错过了什么

编辑4 在进一步研究之后,我现在似乎成功地在服务器启动时连接了调试器。但是,如果存在
pydevd.settrace(..)
函数调用,则服务器永远不会真正启动。启动似乎在
python manage.py runserver 0.0.0.0:8000上冻结/停止。一旦我删除
settrace
行。服务器启动时没有问题。有什么想法吗

服务器启动时,我也会收到以下消息:

警告:找不到使用cython的调试器加速。运行'/usr/local/bin/python'/usr/local/lib/python3.5/site packages/setup\u cython.py“build\u ext--inplace”进行构建。


问题是我无法运行消息中列出的命令,因为文件设置不存在。

你说得对!它确实不会启动runserver进程,但我相信这不是因为它不工作,而是因为它工作正常

请看,当您成功地将pydevd settrace连接到调试器服务器时,您必须在PyCharm上配置它,它已经起作用了,至少对我起作用了

我相信runserver不能工作的原因是因为丢失的cython创建的警告正在停止调试器,您唯一要做的就是告诉它继续运行,然后单击绿色的右箭头跳转该警告

附言

我正在调试运行在docker(docker机器)上的django应用程序,主机IP是192.168.99.1

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "helpdesk.settings")

    from django.core.management import execute_from_command_line

    sys.path.append('pycharm-debug.egg')
    import pydevd
    pydevd.settrace('192.168.99.1', port=3000, stdoutToServer=True, stderrToServer=True)

    execute_from_command_line(sys.argv)


希望我能帮忙

你说得对!它确实不会启动runserver进程,但我相信这不是因为它不工作,而是因为它工作正常

请看,当您成功地将pydevd settrace连接到调试器服务器时,您必须在PyCharm上配置它,它已经起作用了,至少对我起作用了

我相信runserver不能工作的原因是因为丢失的cython创建的警告正在停止调试器,您唯一要做的就是告诉它继续运行,然后单击绿色的右箭头跳转该警告

附言

我正在调试运行在docker(docker机器)上的django应用程序,主机IP是192.168.99.1

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "helpdesk.settings")

    from django.core.management import execute_from_command_line

    sys.path.append('pycharm-debug.egg')
    import pydevd
    pydevd.settrace('192.168.99.1', port=3000, stdoutToServer=True, stderrToServer=True)

    execute_from_command_line(sys.argv)


希望我能帮忙

我有同样的问题
我通过编辑pycharm解释器解决了这个问题
您可以向“路径映射”添加一些配置,如下所示

before the "=" , write your local code path  
after  the "=" , wirte your cloud server code path

我只改变了这个,它很有效!!!

希望能对你有所帮助~

我也有同样的问题
我通过编辑pycharm解释器解决了这个问题
您可以向“路径映射”添加一些配置,如下所示

before the "=" , write your local code path  
after  the "=" , wirte your cloud server code path

我只改变了这个,它很有效!!!
希望能对你有所帮助~