把shell_plus运行到PyCharm?

2024-10-01 17:39:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有没有办法把PyCharm配置成运行shell_plus而不是默认的shell?在

我试着把manage命令的文本放在“起始脚本”中,但是我得到了以下结果 django_管理_shell.run(“/Users/cmason/counsyl/code/website/counsyl/product”) 导入操作系统 导入系统

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

    # The new Django 1.4 default manage.py wants "from django..." before
    # importing settings, but we usually tinker with sys.path in
    # settings_local.py, which is called from settings.py. Importing
    # settings.py works but does mean some double importing. Luckily that
    # module does very little work.
    import settings
    # appease pyflakes; don't ever do this in
    # non-super-meta-namespace-trickery code
    settings

    from django.core.management import execute_from_command_line

    execute_from_command_line("shellplus")

而且它还没有真正运行shell\u plus。在

“起始脚本”似乎是在默认值之外发生的,而不是默认值。在

Shell_plus自动导入所有Django模型类等。在


Tags: djangoinfrompy脚本settingsmanagecode
3条回答

我一直在寻找解决同样问题的方法,最后我来到了这里。我试过别人提出的解决办法,但似乎没有一个能解决这个问题。所以我决定另谋出路。这就是我想到的:

这是PyCharm 2019.2.3的原始Django控制台启动脚本:

import sys, django
print('Python %s on %s' % (sys.version, sys.platform))
print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django):
    django.setup()
import django_manage_shell
django_manage_shell.run(PROJECT_ROOT)

更改下面的最后两行可以以最恰当的方式完成。在

^{pr2}$

要使其正常工作:打开PyCharm设置(CTRL+S),然后进入Django控制台部分。然后在开始脚本窗口中进行更改,然后应用。最后,启动新的Python控制台实例。在

我通过挂接到shell_plus代码来自动加载模型对象。我将此附加到Preferences > Build, Execution, Deployment > Console > Django Console中的默认启动脚本:

from django_extensions.management import shells
from django.core.management.color import color_style
imported_items = shells.import_objects({}, color_style())
for k, v in imported_items.items():
    globals()[k] = v

这是PyCharm 2018.3.3专业版

为了完整起见,以下是起始脚本的完整内容:

^{pr2}$

这不是一个完整的答案,但我发现this script至少可以加载所有的应用程序模型。将此设置放入“设置”>;“控制台”>;“Django控制台”>;“启动脚本”:

import sys
import logging
logging.basicConfig(format="%(levelname)-8s %(asctime)s %(name)s %(message)s", datefmt='%m/%d/%y %H:%M:%S', stream=sys.stdout )
log = logging.getLogger("root")

from django.db.models import get_models
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned

logging.config.dictConfig(settings.LOGGING)
log.debug("Logging has been initialized at DEBUG")
log.setLevel( logging.DEBUG)
log.disabled = False

for _class in get_models():
    if _class.__name__.startswith("Historical"): continue
    log.debug("Registering model {}".format(_class.__name__))
    globals()[_class.__name__] = _class

def debug_sql():
    from debug_toolbar.management.commands import debugsqlshell
    return

我还提交了这个

相关问题 更多 >

    热门问题