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

AWS EC2 Mac实例执行shell脚本无法导入pxr模块求助

解决AWS EC2 mac2.metal实例上Node.js子进程执行usdzconvert脚本找不到pxr模块的问题

核心原因

Node.js子进程默认不会加载用户shell的配置文件(如~/.zshrc),且脚本中的路径计算、环境变量设置可能与实际执行环境不匹配,导致Python无法定位到pxr模块。

具体解决步骤

  • 修正脚本的BASEPATH计算逻辑
    当Node.js从非脚本所在目录调用该shell脚本时,dirname "$0"可能返回相对路径或错误的绝对路径。建议改用绝对路径定义BASEPATH,或在Node.js调用子进程时指定cwd参数为脚本所在目录。
    示例修改后的脚本:

    #!/bin/sh
    # 用readlink -f获取脚本绝对路径,避免相对路径问题
    BASEPATH=$(dirname "$(readlink -f "$0")")
    export PATH=$PATH:$BASEPATH/USD:$BASEPATH/usdzconvert
    export PYTHONPATH=$PYTHONPATH:$BASEPATH/USD/lib/python
    
    # 新增调试打印,确认路径是否正确
    echo "PYTHONPATH: $PYTHONPATH"
    echo "BASEPATH: $BASEPATH"
    
    usdzconvert ../tmp/$2 ../tmp/$1
    
  • 显式指定Python解释器路径
    避免系统默认Python版本干扰,先在终端执行which python3.7拿到目标版本的绝对路径,然后修改脚本调用逻辑:
    要么直接修改usdzconvert脚本的shebang行:

    # 在usdzconvert脚本开头替换为正确路径
    #!/usr/local/bin/python3.7
    

    要么在shell脚本中用绝对路径调用:

    /usr/local/bin/python3.7 $BASEPATH/usdzconvert/usdzconvert ../tmp/$2 ../tmp/$1
    
  • 在Node.js子进程中传递完整环境变量
    用child_process.spawn或exec调用脚本时,将终端中生效的环境变量传递给子进程,或手动合并必要变量:
    示例Node.js代码:

    const { spawn } = require('child_process');
    const scriptPath = '/path/to/your/script.sh';
    // 合并当前进程环境变量与需要的PYTHONPATH
    const env = {
      ...process.env,
      PYTHONPATH: '/path/to/USD/lib/python:' + (process.env.PYTHONPATH || '')
    };
    // 若需要加载shell配置,可指定zsh并预加载配置文件
    const child = spawn('/bin/zsh', ['-c', 'source ~/.zshrc && ' + scriptPath + ' arg1 arg2'], { env });
    
    // 捕获输出用于调试
    child.stdout.on('data', (data) => console.log(`stdout: ${data}`));
    child.stderr.on('data', (data) => console.error(`stderr: ${data}`));
    
  • 调试环境变量差异
    在脚本中添加调试命令,对比终端与子进程执行时的环境差异:

    # 在脚本中新增以下内容
    echo "当前shell: $SHELL"
    echo "Python路径: $(which python)"
    python -c "import sys; print('Python版本:', sys.version); print('sys.path:', sys.path)"
    

    将脚本输出与终端直接执行的结果对比,定位路径或环境变量的差异点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:27:39