首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在node js中设置env变量,并在python脚本中使用

在node js中设置env变量,并在python脚本中使用
EN

Stack Overflow用户
提问于 2018-06-04 02:53:57
回答 1查看 1K关注 0票数 0

我在节点js app中设置了一个环境变量:process.env.data = "data-env";

在我的python脚本中使用:print(os.environ["data"])访问相同的环境变量

代码语言:javascript
复制
but getting error throw err;
        ^

Error: KeyError: 'data'
    at PythonShell.parseError (H:\NodeJS\node_modules\python-shell\index.js:184:17)
    at terminateIfNeeded (H:\NodeJS\node_modules\python-shell\index.js:98:28)
    at ChildProcess.<anonymous> (H:\NodeJS\node_modules\python-shell\index.js:89:9)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
    ----- Python Traceback -----
    File "script.py", line 5, in <module>
      print(os.environ["data"])
    File "C:\Program Files\Anaconda3\lib\os.py", line 725, in __getitem__
      raise KeyError(key) from None

使用nodeJs中的以下代码运行py脚本

代码语言:javascript
复制
var PythonShell = require('python-shell');
var myPythonScriptPath = './script.py';
var pyshell = new PythonShell(myPythonScriptPath);


pyshell.on('message', function (message) {
    // received a message sent from the Python script (a simple "print" statement)
    console.log(message);
});

// end the input stream and allow the process to exit
pyshell.end(function (err) {
    if (err){
        throw err;
    };

    console.log('finished');
});

我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 03:16:41

修改process.env会更改当前进程和(可选)子进程的环境变量。

因此,除非您从Node.js应用程序启动Python脚本,否则无法从Python脚本访问在Node.js应用程序中设置的环境变量。

编辑:

PythonShell接受第二个参数options,您可以使用该参数将环境变量向下传播到子进程。

代码语言:javascript
复制
var pyshell = new PythonShell(myPythonScriptPath, {
  env: process.env,
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档