Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在Django中调试或使用pdb:bdb.bdbGuit_Python_Django_Debugging_Python 3.7_Django 2.2 - Fatal编程技术网

Python 无法在Django中调试或使用pdb:bdb.bdbGuit

Python 无法在Django中调试或使用pdb:bdb.bdbGuit,python,django,debugging,python-3.7,django-2.2,Python,Django,Debugging,Python 3.7,Django 2.2,我在docker中使用Django(2,2,4,'final',0),但我可以在内部使用bash打开或执行所需的任何内容。但我不能调试。(陈述了一些方法,但没有一种适合我) 在我的views.py中,我有各种各样的函数,例如这里的函数 def visGraph(request): showgraph = 'Graphen' selectDB = request.GET.get('selectDB', '') __import__("pdb").set_trace()

我在docker中使用Django
(2,2,4,'final',0)
,但我可以在内部使用bash打开或执行所需的任何内容。但我不能调试。(陈述了一些方法,但没有一种适合我)

在我的
views.py
中,我有各种各样的函数,例如这里的函数

def visGraph(request):
    showgraph = 'Graphen'
    selectDB = request.GET.get('selectDB', '')
    __import__("pdb").set_trace()
    title += " <i>"+showgraph+"</i> ("+selectDB+")"
我假设对于pdb,我需要一个活动的shell,而不仅仅是一个日志查看器,但我不知道该更改什么或如何更改。 但已经尝试过这里给出的答案:
但它只是打开了一个Python Shell。

解决方案实际上相当简单。问题在于码头工人。解决方案如下所述,并且有效:

将此添加到docker-compose.yml:

 ports:
      - "4444:4444"
    stdin_open: true
    tty: true
安装
远程pdb
并使用以下命令代替默认的pdb命令:

__import__("remote_pdb").set_trace(host='0.0.0.0', port=4444)
登录docker并远程登录pdb会话:

telnet 0.0.0.0 4444

如果您知道最终将进入调试器,则可以使用
run
而不是
up

$docker compose运行--rm--服务端口django\u web
问题是
up
假设它将运行多个服务,即使您告诉它只运行一个服务,它也会为您包装这些服务。这也是它在输出前加上服务名称的原因:

web_1 |一些输出
db| 1 |一些db日志
运行
命令,这样您就可以拥有一个shell和一个调试器,而不会出现问题或远程\u pdb解决方案


注意:使用
run
时,您必须执行此操作,因为并非所有操作都会自动启动。

total guess,但请尝试卸载bdp。也许它的终端部分有冲突,idk.pdb在任何其他python代码中都可以正常工作,甚至不能这样启动:
错误:没有这样的服务:django_web
,只需在我通常使用的文件夹中使用它,就可以在服务上运行一个一次性命令有一些建议…第一部分建议您在
docker compose.yml
中为该特定服务使用不同的名称(或者您没有在项目文件夹中运行它?)。第二部分建议您没有为服务指定命令?类似于
命令:[“python”、“manage.py”、“runserver”、“0:8080”]
在您的
docker compose.yml中为django提供的服务下。如果您愿意,您确实可以指定定制的一次性命令,如:
docker compose run--rm--service ports django\u web my\u custom\u command
,它会覆盖
docker compose.yml
中的默认命令。大约两个月前就解决了。查看我自己的答案是的,我已经阅读了您的答案(我甚至在原始答案中引用了它),但除非您无法控制docker容器的启动方式,否则我建议不要安装额外的依赖项,而只使用docker提供给您的内容,因为如果您正确调用docker compose,它确实可以工作。
__import__("remote_pdb").set_trace(host='0.0.0.0', port=4444)
telnet 0.0.0.0 4444