我想使用Visual Studio调试工具ptvsd
启用调试功能。使用它,我必须使用
ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
ptvsd.wait_for_attach()
使用ptvsd意味着我无法使用线程和重新加载,因此我附加了args
sys.argv.append("--nothreading")
sys.argv.append("--noreload")
为方便调试,我创建了一个args来执行这些代码行。我创建了命名参数debug
if __name__ == "__main__":
#previous line omitted
parser = argparse.ArgumentParser()
parser.add_argument("--debug", help="enable debugging through vscode")
args = parser.parse_args()
if args.debug:
sys.argv.append("--nothreading")
sys.argv.append("--noreload")
ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
ptvsd.wait_for_attach()
execute_from_command_line(sys.argv)
我想要实现的是,当我想调试我的应用程序时,我使用以下命令
python manage.py runserver 0:8000 --enable-debugging
,当我只想运行我的应用程序时,我使用python manage.py runserver 0:8000
但是当我尝试使用运行时它返回一个错误
python manage.py runserver 0:8000
表示runserver
和0:8000
由此,我是否必须将所有可能的django位置参数都包含到parser
中?以及如何使用0:8000
来做到这一点?添加所有可能的端口?
在这种情况下使用命名参数不可行吗?
答案 0 :(得分:0)
因此,显然我可以使用parser.parse_known_args()
,当存在无法识别的参数时应该没问题。并且因为我希望将--debug
作为标志,所以我在add_argument中添加了action='store_true'
,以便只要存在该参数它就返回true。
有了这个,我可以通过使用它来解决,然后在将--debug
参数传递给execute_from_command_line
时删除它。像这样:
if __name__ == "__main__":
#previous line omitted
parser = argparse.ArgumentParser()
parser.add_argument("--debug", action='store_true', help="enable debugging through vscode")
args = vars(parser.parse_known_args()[0])
if args.debug:
sys.argv.append("--nothreading")
sys.argv.append("--noreload")
ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
ptvsd.wait_for_attach()
execute_from_command_line(sys.argv)
现在可以使用了:)