1

我目前正在开发一个 Django 应用程序,我喜欢使用 pdb 来了解我的应用程序处于哪个状态以及类似的东西。我想在调试器中拥有 BPython 的所有惊人功能......比如自动完成和类似的东西。
这甚至可能吗?谢谢 :)

4

2 回答 2

2

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

Nick 的另一个答案也适用,但我不喜欢在我的全局中添加 Django 特定的东西.pythonrc

#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(                                                                         │
└───────────────────────────────────────────────────────────────────────────────────┘
于 2019-11-12T21:11:39.803 回答
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

于 2014-06-26T15:19:19.567 回答