是否可以使用 python-shell 包在 Node JS 中安装 python 包?

Ani*_*udh 5 python pip node.js npm

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

蟒蛇壳

是否可以使用相同的库安装 python 包?就像是pip install package

我需要导入一些库来处理 Python 脚本。

如果此软件包无法实现,还有其他方法可以实现吗?

Rah*_*hul 5

这是第一个文件: 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);
    })
Run Code Online (Sandbox Code Playgroud)

此文件运行另一个文件,install_package.py并通过命令行为该文件提供参数。
您可以使用document.getElementById().value()
如下所示的第二个文件从 HTML 中获取包名称:install_package.py

import os
import sys
os.system('python3 -m pip install {}'.format(sys.argv[1]))
Run Code Online (Sandbox Code Playgroud)

安装任何传递给它的包名称。
由于pytube已经为我安装了软件包,因此输出为:

rahul@RNA-HP:~$ node test.js
[ 'Requirement already satisfied: pytube in ./.local/lib/python3.7/site-packages (9.5.0)' ]
Run Code Online (Sandbox Code Playgroud)

同样可以使用subprocess代替os

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)
Run Code Online (Sandbox Code Playgroud)

输出使用subprocess

rahul@RNA-HP:~$ node test.js
[ "['Requirement already satisfied: pytube in ./.local/lib/python3.7/site-packages (9.5.0)', '']" ]
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。
如果有什么可以改进的,请发表评论。