Pythonshell:将venv用作pythonPath不起作用

2024-09-30 16:38:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在学习python shell文档,目前正在尝试:

testhello.py:

print('Hello from python')

在my server.js上(使用Node.js和Express):

var {PythonShell} = require('python-shell');

//next is inside a bigger function

socket.on("animal", function(){
      ina.low();
      inb.low();

      var options = {
            mode: 'text',
            pythonPath: '/Users/myname/Desktop/final_project/for_pyshell/myvenv/bin/python3',
            pythonOptions: ['-u'],
            scriptPath: '/Users/myname/Desktop/final_project/for_pyshell',
            args: ['value1', 'value2', 'value3']
          };

      PythonShell.run('testhello.py', options, function (err, results) {
         if (err) throw err;

         console.print('results: %j', results);
      });


    }) // closes socket.on 

因此,我的python脚本和venv与我的节点应用程序位于不同的文件夹中。我没有得到任何错误,但也没有结果。有没有一个原因可以解释为什么将虚拟环境称为pythonPath在这里不起作用?我们应该改变什么?非常感谢您的帮助

添加:如果我将python shell代码移到socket.on结构之外,则会出现错误:

errno: 'ENOENT'

补充2:我用本地Python而不是venv实现了这一点,但如果有人有建议,我仍然对使用虚拟环境感兴趣


Tags: pyonvarjsfunctionsocketshellresults