如何在VS Code终端用单个Python脚本启动Django项目并执行多命令?
当然可以!用一个Python脚本一键启动Django项目
我之前也碰到过类似的需求,直接给你两种实用方案,轻松搞定这三个命令的自动执行:
方案一:用pipenv run跳过shell激活 + 多线程并行运行
其实没必要手动进入pipenv shell,用pipenv run就能直接在虚拟环境上下文里执行命令,更适合脚本自动化。另外Django服务和Sass编译器都是持续运行的进程,得用多线程让它们同时跑起来。
直接在项目根目录(和manage.py同目录)创建start.py,内容如下:
import subprocess import threading def run_command(cmd): """封装命令执行逻辑,包含错误处理""" try: subprocess.run(cmd, check=True, shell=True) except subprocess.CalledProcessError as e: print(f"⚠️ 命令执行失败: {cmd}\n错误详情: {e}") if __name__ == "__main__": # 可选:先确保虚拟环境依赖都安装完成,避免启动时出错 print("🔍 检查并安装项目依赖...") run_command("pipenv install") # 准备需要并行运行的两个核心命令(通过pipenv run直接使用虚拟环境) django_server_cmd = "pipenv run python manage.py runserver" sass_watch_cmd = "pipenv run python manage.py sass-compiler --watch" # 启动线程同时运行两个服务 print("🚀 启动Django服务和Sass编译器...") django_thread = threading.Thread(target=run_command, args=(django_server_cmd,)) sass_thread = threading.Thread(target=run_command, args=(sass_watch_cmd,)) django_thread.start() sass_thread.start() # 等待线程运行(需要停止时按Ctrl+C即可) django_thread.join() sass_thread.join()
方案二:强制进入pipenv shell上下文执行
如果你一定要先激活pipenv shell再执行命令,可以通过传递脚本内容的方式实现,但这种方式兼容性稍差(依赖bash环境),示例代码如下:
import subprocess if __name__ == "__main__": # 构造shell脚本内容,用后台运行&和wait保证两个服务同时存活 startup_script = """ pipenv shell << EOF python manage.py runserver & python manage.py sass-compiler --watch & wait EOF """ try: subprocess.run(startup_script, check=True, shell=True, executable="/bin/bash") except subprocess.CalledProcessError as e: print(f"❌ 启动失败: {e}")
注意:Windows环境下需要用Git Bash或WSL来运行这个脚本,否则会出现shell语法兼容问题。
使用步骤
- 把
start.py放到Django项目根目录 - 在VS Code终端直接执行:
python start.py - 要停止所有服务,直接按
Ctrl+C即可
这样就能一键搞定所有启动步骤啦!
内容的提问来源于stack exchange,提问作者Thiemo
相关产品推荐
相关产品推荐

