python - PyCharm docker 调试错误

标签 python django debugging docker pycharm

查看编辑

我正在尝试获取最新版本的 PyCharm 以成功调试在 Docker 中运行的 Django。但是,我在设置远程 python 解释器时遇到了问题,并且在我尝试启动调试器时立即收到错误消息。
Can't run remote python interpreter: com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"the working directory 'C:/Program Files (x86)/JetBrains/PyCharm 171.2613.10/jre64/jre/bin' is invalid, it needs to be an absolute path"}
这条路,在我眼里看起来很绝对,所以我猜它是别的东西。我什至不确定是谁或什么导致了错误。 docker 容器(由于 JSON 响应)或 PyCharm。

运行

  • PyCharm 2017.1
  • Docker for Windows(docker 版本 1.13.0)

  • 有没有想过我可能会丢失/遇到问题?

    编辑

    忘记包含我在 PyCharm 中关于如何设置远程解释器的设置。

    enter image description here

    上述设置没有错误

    编辑 2

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

    编辑 3

    我现在在启动调试器(PyCharms Python Remote Debugger)并在之后启动服务器时获得了“成功”消息。但是我似乎调试器在 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线。服务器启动没有问题。有任何想法吗?

    服务器启动时,我也会收到此消息: warning: Debugger speedups using cython not found. Run '"/usr/local/bin/python" "/usr/local/lib/python3.5/site-packages/setup_cython.py" build_ext --inplace' to build.
    问题是我无法运行消息中列出的命令,因为文件 setup_cython 不存在。

    最佳答案

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

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

    我相信 runserver 无法正常工作的原因是因为缺少 cython 所创建的警告正在停止调试器,您唯一需要做的就是告诉它继续运行并点击绿色向右箭头跳过该警告所以。

    remote debugger stopped
    remote debugger running

    PS。

    我正在调试在 docker (docker-machine) 上运行的 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 remote debugger configuration

    希望我有所帮助!

    关于python - PyCharm docker 调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008280/

    相关文章:

    c++ - 调试visual c++程序时,指定的文件无法执行

    python - 如何找到整数n次根?

    python - 使 decimal.Decimal 成为 Python 中的默认数值类型

    python - 更改扭曲矩阵日志中的时间格式

    python - 如何在遗留 Flask 应用程序中实现个性化 URL?

    python - 在 django 中编辑 slug 帖子

    python - Django 管理中的 ManyToMany : select none

    python - Pycharm 2017.1 打开调试命令行根本不起作用

    python - 继承模型更新到其父模型

    java - Java 的核心转储等效项