You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用os.system执行npm命令首条成功后续运行报错

问题根因
  • 核心错误是cmd /k参数使用逻辑错误:cmd /k的作用是执行完传入的命令后,不关闭当前cmd窗口,停在交互输入状态等待用户输入新命令。os.system是阻塞式调用,只要启动的cmd进程不退出,Python代码就会卡在当前行,不会执行后续逻辑。你看到的“npm_dev不是内部或外部命令”报错,根本不是Python运行后续代码抛出的——第一条npm i执行完成后,终端已经切换到cmd交互环境,脱离了Python运行上下文,界面显示的npm_dev = os.system(...)这类Python代码被送入cmd执行,cmd无法识别Python语法,自然会把开头的npm_dev当成系统命令抛出错误。
  • 命令存在拼写错误:启动serve、打开Chrome的两条命令中,cmd和参数/k之间缺少空格,写成了cmd/k,就算参数逻辑正确,这个写法也会直接触发命令找不到的报错。
  • 流程设计有冲突:不管是npm run dev启动开发服务,还是serve -s build启动静态服务,都是持续运行在前台的常驻进程,就算前面的命令全部正常执行,os.system也会卡在启动服务这一步,永远不会运行到后续打开Chrome的代码。另外要注意:npm run dev本身自带开发服务器,不需要提前执行build、也不需要调用serve;npm run build仅用于打包生产环境静态文件,打包完成后才需要用serve启动服务,两套流程是二选一的关系,不能混写。
修复方法
  1. 替换cmd执行参数:把所有cmd调用的/k参数换成/c,cmd /c的逻辑是执行完传入的命令后自动退出cmd进程,回到Python执行流,不会卡住后续代码。
  2. 修正命令拼写:所有cmd/k补上空格,改成标准的cmd /c格式。
  3. 解决服务阻塞问题:启动dev或serve服务时,通过start命令让服务在独立新窗口运行,避免阻塞Python后续流程;同时增加几秒等待时间,等服务完全启动后再打开Chrome,避免页面访问失败。
  4. 理顺执行流程:开发调试就走npm i→npm run dev的流程;预览生产构建产物就走npm i→npm run build→serve -s build的流程,不要混写两套逻辑。
修正后参考代码
from git import Repo
import os
import shutil
import time

git_dir = "https://github.com/devias-io/material-kit-react.git"
local_dir = "C:\\Users\\A\\Desktop\\Internship\\git_clone\\data\\"

# 清理并重建本地目录,避免首次运行目录不存在报错
if os.path.exists(local_dir):
    shutil.rmtree(local_dir)
os.makedirs(local_dir)

# 克隆仓库并切换工作目录
Repo.clone_from(git_dir, local_dir)
os.chdir(local_dir)
print("Current directory: ", os.getcwd())

# 安装项目依赖
os.system('cmd /c "npm i"')

# ---- 流程1:开发模式(默认选这个即可)----
# 新开窗口启动开发服务,不阻塞后续代码
os.system('start cmd /c "npm run dev"')
# 等待5秒让服务完成启动
time.sleep(5)
# 打开浏览器访问服务
os.system('cmd /c "start chrome http://localhost:3000"')

# ---- 流程2:生产构建预览(需要用的时候把上面流程1的代码注释,放开下面的代码)----
# os.system('cmd /c "npm run build"')
# # 新开窗口启动静态文件服务
# os.system('start cmd /c "serve -s build"')
# time.sleep(3)
# os.system('cmd /c "start chrome http://localhost:3000"')

补充说明:如果运行时提示npm、serve不是可执行命令,先确认本机已安装Node.js,且npm、serve已经加入系统环境变量,在任意cmd窗口可直接调用后再运行脚本。

内容的提问来源于stack exchange,提问作者Abhijith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:39:41