使用BPython作为Django应用程序的调试器

时间:2013-08-22 15:24:22

标签: django python-3.x bpython

我目前正在开发一个Django应用程序,我喜欢使用pdb来了解我的应用程序和某些类似的东西。我想在debuger中拥有BPython的所有惊人功能...就像自动完成和类似的事情。
这甚至可能吗?谢谢:))

2 个答案:

答案 0 :(得分:1)

在python repl启动文件中放入一些代码,以检测您在Django项目中的位置,并执行必要的导入:

  1. 将它放在〜/ .bashrc或〜/ .bash_profile中 export PYTHONSTARTUP=~/.pythonrc

  2. 创建或修改~/.pythonrc

    try:
        from django.core.management import setup_environ
        import settings
        setup_environ(settings)
        print 'imported django settings'
    except:
        pass
    

    使用这个更复杂的代码片段导入所有django模块并在这里的项目子目录中工作:https://gist.github.com/pirate/2659b242bded82c3c58f2458e6885738#file-pythonrc-L56

答案 1 :(得分:1)

我知道这已经很老了,但是我仍然找不到我喜欢的解决方案,最后得到了下面的解决方案,其中使用了django命令。

Nick的另一个回答也同样有效,但是我不喜欢在全局.pythonrc

中添加Django特定的东西。
#myapp/management/commands/bshell.py

from django.core.management.base import BaseCommand
from django.apps import apps


class Command(BaseCommand):
    help = "Runs the bpython interactive interpreter if it's installed."
    requires_model_validation = False

    def handle(self, *args, **options):
        loaded_models = apps.get_models()

        models = {}
        for model in loaded_models:
            models[model.__name__] = model

        import bpython

        bpython.embed(models)
.venv ❯ python manage.py bshell
>>> Locat
┌───────────────────────────────────────────────────────────────────────────────────┐
│ Location(                                                                         │
└───────────────────────────────────────────────────────────────────────────────────┘