簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM