From 81410d56bcf810f93d84ec9ecc2ab11dc2f6ab7b Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Sat, 29 Mar 2025 13:13:43 +0800 Subject: [PATCH] fix(run.sh): ensure Pulumi uses virtualenv Python and auto-install SDK if missing --- scripts/run.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/scripts/run.sh b/scripts/run.sh index 846514be..e4a53577 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -161,7 +161,11 @@ pulumi_run() { cd "$PULUMI_DIR" # 设置 Python 虚拟环境路径 - VENV_DIR="${PULUMI_DIR}/.venv" + VENV_DIR="$PROJECT_ROOT/.venv" + PYTHON_BIN="$VENV_DIR/bin/python" + + # 1. 激活虚拟环境 + echo "✅ 激活虚拟环境: $VENV_DIR" # 如果没有虚拟环境就创建并安装依赖 if [ ! -d "$VENV_DIR" ]; then @@ -174,6 +178,20 @@ pulumi_run() { source "$VENV_DIR/bin/activate" fi + source "$VENV_DIR/bin/activate" + + # 2. 确保 pulumi 安装在虚拟环境中 + if ! "$PYTHON_BIN" -c "import pulumi" &> /dev/null; then + echo "⚠️ Pulumi SDK 未安装,正在安装..." + "$PYTHON_BIN" -m pip install --upgrade pip + "$PYTHON_BIN" -m pip install pulumi pulumi-aws PyYAML + else + echo "✅ Pulumi SDK 已就绪" + fi + + # 3. 告诉 Pulumi 使用这个 Python + export PULUMI_PYTHON_CMD="$PYTHON_BIN" + # ✅ 明确选择 stack,若不存在则创建,避免交互式提示 pulumi stack select "$STACK_NAME" 2>/dev/null || pulumi stack init "$STACK_NAME"