/ Programming language

【 Integrate 】使用 python-shell 整合 Node.js 與 Python

內容

  • 學習目標
  • 前置準備作業
  • 程式與軟體
  • Node.js 程式
  • Python 程式
  • 測試

學習目標

  • 透過 Node.js 的 Express 建立一支 API,並經由 python-shell 來呼叫 Python 程式,並將結果再回傳給用戶端

前置準備作業


程式與軟體

  • Node.js
  • Python

Node.js 程式

Step 1. 建立 Node.js 環境與安裝相依套件

  • 建立專案資料夾
    • 本範例將資料夾命名為 integrating-Node-and-Python
  • 透過 終端機 切換路徑到 integrating-Node-and-Python 資料夾
    • 指令為 cd integrating-Node-and-Python
  • 請在 終端機 依序執行下方指令
    • 建立環境

      npm init -y
      

      -----2019-11-28---10.02.04

    • 建立環境

      npm i express
      

      -----2019-11-28---10.02.39

    • 建立環境

      npm i python-shell
      

      -----2019-11-28---10.03.05


Step 2. 透過 Visual Studio Code 開啟專案資料夾

  • 請在 終端機 執行下方指令

    code .
    

    -----2019-11-28---10.06.53


Step 3. 撰寫 Node.js 程式

  • 新增名為 app-call-python-shell.js 的程式
    -----2019-11-28---10.09.16

  • 程式如下

    • 說明如下
      • 第 1 與第 2 行:引用 express 套件並使用
      • 第 3 行:引用 python-shell 套件
      • 第 5 到第 7 行:啟動伺服器並在埠 3000 接聽連線
      • 第 9 行:宣告一個為 Get 方法的 API,其 Route 為 /call/python
      • 第 11 到第 27 行:為 Get /call/python API 的處理內容
      • 第 12 到第 18 行:將 Query String 的 namefrom 包成 options 的物件
      • 第 20 到第 25 行:將 options 物件的資料傳送給 process.py 的 Python 程式,當執行回完成後,如有錯誤發生會將訊息放於 err 變數,否則執行成功會將結果存放到 data 變數中,並將結果回傳給用戶端

Python 程式

Step 1. 撰寫 Python 程式

  • 新增名為 process.py 的程式
    -----2019-11-28---10.23.21

  • 程式如下

    • 說明如下
      • 第 1 與第 2 行:引用 sysjson 套件並使用
      • 第 4 到第 7 行:將 Query String 的 namefrom 包成 result 物件
      • 第 9 行:轉成資料為字串
      • 第 11 到第 12 行:將結果回傳給 Node.js 程式

測試

Step 1. 執行 Node.js 程式

  • 請在 終端機 執行下方指令

    node app-call-python-shell.js
    

    -----2019-11-28---10.31.20


Step 2. 開啟瀏覽器呼叫 API

  • 請在 瀏覽器 輸入下方網址

    http://localhost:3000/call/python?name=Archer&from=Taipei
    
  • 當執行成功後會顯示如下資訊

    -----2019-11-28---10.37.36


GitHub
List of blogs
Archer 阿全

Archer 阿全

Having being a software engineer. Experience with Python, JavaScript, Node.js, Objective-C, Micro:bit, Raspberry Pi, AWS, Azure, IoT. ❆ [email protected] https://oranwind.org/author/archer/

Read More