[英]Is it possible to install python packages in Node JS using python-shell package?
我才知道我们可以使用下面的npm包在Node JS中运行Python脚本。
是否可以使用相同的库安装python软件包? 像pip install package
这样的东西
我需要导入一些库来使用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中获取包名称document.getElementById().value()
这是第二个文件: install_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)' ]
使用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)
使用subprocess
输出:
rahul@RNA-HP:~$ node test.js
[ "['Requirement already satisfied: pytube in ./.local/lib/python3.7/site-packages (9.5.0)', '']" ]
希望这可以帮助。
评论是否有任何可以改进的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.