你如何从 npm 脚本 运行 pyenv 命令?

How do you run pyenv commands from an npm script?

我想在 package.json 中有一个 npm 脚本,类似于:

"scripts": {
   "activate": "pyenv activate mypythonenvironment"
}

如果我只是 运行 pyenv activate mypythonenvironment 在 bash shell 终端中,它完全有效。

但是,如果我 运行 我的脚本在 bash shell npm run activate 我得到错误:

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

如有任何帮助,我们将不胜感激!提前致谢。

编辑: 我这样做是为了开发目的,这样我就可以从我的前端节点目录 运行 我的后端以快速启动该项目。

看来问题是 npm scripts 运行s 的 bash shell 没有配备我的 .bash 中可用的所有库rc.

如错误消息所述,您未能执行 shell 登录脚本通常在您自己使用 shell 时执行的初始化。激活可能看起来像 eval "$(pyenv init -)"; eval "$(pyenv virtualenv-init -)";你也可以 运行 在你的 scripts 节中:

"scripts": {
   "activate": "eval \"$(pyenv init -)\"; eval \"$(pyenv virtualenv-init -)\"; pyenv activate mypythonenvironment"
}

但是你真的确定要求 pyenv 是解决这个问题的好方法吗?常规的虚拟环境可能会很好地工作,并且对您的用户可能已经出于其他原因使用的任何东西的干扰更少。