可以使用pythonshell包在节点JS中安装python包吗?

可以使用pythonshell包在节点JS中安装python包吗?,python,node.js,npm,pip,Python,Node.js,Npm,Pip,我刚刚知道,我们可以使用下面的npm包在NodeJS中运行Python脚本 可以使用相同的库安装python包吗? 类似于pip安装包的东西 我需要导入一些库来使用Python脚本 如果此软件包无法实现此功能,是否有其他方法实现此功能?这里是第一个文件:test.js let {PythonShell} = require('python-shell'); var package_name = 'pytube' let options = { args : [package_name]

我刚刚知道,我们可以使用下面的npm包在NodeJS中运行Python脚本

可以使用相同的库安装python包吗? 类似于
pip安装包的东西

我需要导入一些库来使用Python脚本


如果此软件包无法实现此功能,是否有其他方法实现此功能?

这里是第一个文件:
test.js

let {PythonShell} = require('python-shell');
var package_name = 'pytube'
let options = {
    args : [package_name]
}
PythonShell.run('./install_package.py', options, 
    function(err, results)
    {
        if (err) throw err;
        else console.log(results);
    })
此文件运行另一个文件
install_package.py
,并通过命令行为该文件提供参数。
您可以使用类似于
document.getElementById().value()的东西从HTML中获取包名。

这是第二个文件:
install\u package.py

import os
import sys
os.system('python3 -m pip install {}'.format(sys.argv[1]))
无论传递给它的包名是什么,它都会安装。
由于已为我安装了包
pytube
,因此输出为:

rahul@RNA-HP:~$ node test.js
[ 'Requirement already satisfied: pytube in ./.local/lib/python3.7/site-packages (9.5.0)' ]
同样可以使用
子流程
而不是
操作系统

import subprocess
import sys
process = subprocess.Popen(['python3', '-m', 'pip', 'install', sys.argv[1]], stdout = subprocess.PIPE)
output, error = process.communicate()
output = output.decode("utf-8").split('\n')
print(output)
使用
子流程的输出

rahul@RNA-HP:~$ node test.js
[ "['Requirement already satisfied: pytube in ./.local/lib/python3.7/site-packages (9.5.0)', '']" ]
希望这有帮助。

如果有什么可以改进的地方,请发表评论。

只是为了澄清您是否希望使用节点js的
pythonshell
安装python软件包?@Rahul yes。我是这个软件包的新手,我不确定它是否可行。为什么不直接在终端上使用
pip
安装呢?还是你想把它整合到什么东西中?@Rahul,我有一个运行在ubuntu服务器上的节点应用程序。是否可以将pip与节点应用程序一起运行?