更新节点子模块的 Python 子进程命令 - NVM、NPM 和节点 v18.14.1

问题描述 投票:0回答:1

我正在尝试向我的 python 项目添加一个代码,该代码将运行以下命令序列来更新我的 git 存储库中的节点子模块。

git submodule update 
nvm use v18.14.1
npm install <node-package>

这看起来应该足够简单,但是由于 nvm 是一个函数而不是 ubuntu 查找的正常位置中的 shell 脚本,因此 python 子进程命令无法找到它。调用子进程的python代码是作为服务运行的,我需要的是能够进入一个shell环境,在这里我可以使用nvm函数安装在.nvm文件夹中的npm版本,并且可以访问正确的运行时的节点版本。当我尝试直接访问我的 npm 命令时,npm 找不到节点并且无法工作。

我试图不使用 apt-get 安装 npm 或节点,因为我使用的是与 nvm 一起安装的自定义版本用于此服务。当我使用 sudo su 作为非特权服务用户登录时,我可以成功运行上述命令。

如何在这个环境中运行节点子模块的更新命令作为 python 的运行服务?

有没有办法让这些在正确的环境中执行?或者有没有办法指定节点二进制位置以直接调用 .nvm 文件夹结构中的 npm 命令?

python node.js git ubuntu subprocess
1个回答
0
投票

我能够通过在 python 子进程调用的 env 参数中传递一个 PATH 变量来为我的项目解决这个问题,如下所示:

subprocess.run(['thing'], env={'PATH':'path/to/thing/bin'})
© www.soinside.com 2019 - 2024. All rights reserved.