使用bpython作为Django shell时如何在启动时预加载指定导入语句
解决方案
方案1:Django原生配置(无需额外安装依赖)
- 第一步:在项目根目录创建启动脚本,命名为
shell_startup.py,写入你需要自动执行的导入语句:
from cbapp.models import * from cbapp.services import * # 可按需添加其他常用导入
- 第二步:启动shell时指定
PYTHONSTARTUP环境变量指向该脚本即可自动执行导入:
PYTHONSTARTUP=./shell_startup.py python manage.py shell
- 可以自定义快捷启动脚本简化操作:
在项目根目录创建start_shell.sh,内容如下:
#!/bin/bash PYTHONSTARTUP=./shell_startup.py python manage.py shell
执行chmod +x start_shell.sh赋予执行权限,后续每次直接运行./start_shell.sh即可启动带自动导入的bpython shell。
方案2:使用django-extensions的shell_plus工具(功能更丰富)
如果可以接受安装额外工具,这个方案适配性更强,支持自定义导入规则、自动加载所有模型等功能:
- 第一步:安装django-extensions
pip install django-extensions
- 第二步:在项目
settings.py的INSTALLED_APPS中添加配置:
INSTALLED_APPS = [ # 其他原有app 'django_extensions', ] # 指定默认使用bpython作为shell SHELL_PLUS = "bpython" # 配置自定义自动导入内容 SHELL_PLUS_PRE_IMPORTS = [ ('cbapp.models', '*'), ('cbapp.services', '*'), # 可按需添加其他导入规则 ]
- 第三步:后续启动shell直接执行以下命令即可,会自动完成所有配置的导入操作:
python manage.py shell_plus
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

