Я создаю настольное приложение, используя Electron JS и Python. когда я пытаюсь соединить мои js-файлы с python, я выдаю ошибки. У меня есть следующие файлы.
main.js
linker.js
package.json
index.html
main.py
Я следую различным учебным пособиям следующим образом.
Официальная документация npm
Вопрос, связанный со Stackoverflow
Я также нахожу решение browserify и создаю bundle.js и связываю его с файлом html , но я сообщаю об ошибке, чтовызывающая функция не определена в bundle.js для browserify Я перехожу по этой ссылке. browserify для electronicjs
linker.js :
const {PythonShell} = require('python-shell');
// import {PythonShell} form 'python-shell'; // also tried this
function myFunc(){
// var python = require("python-shell");
var path = require("path");
var city = document.getElementById("city").value;
document.getElementById("city").value = "";
var options = {
mode: 'text',
scriptPath : path.join(__dirname, '/../engine/'),
args : [city] // passing argument
};
var pyshell = new PythonShell('main.py', options);
pyshell.on('message', function(message){
alert(message);
});
}
index.html :
<!DOCTYPE html>
<html>
<head>
<script src="linker.js"></script>
<title>HCMS</title>
</head>
<body>
<input type="text" id="city" placeholder="Enter City name">
<button onclick="myFunc()">Clicke</button>
</body>
</html>
main.py :
import requests
from bs4 import BeautifulSoup as bs
import sys
city = sys.argv[1]
def myFunc(place):
# place = place.replace(" ", "-")
# url = "https://www.weather-forecast.com/locations/" + place + "/forecasts/latest"
# r = requests.get(url)
# soup = bs(r.content, "lxml")
# weather = soup.findAll("span", {"class": "phrase"})[0].text
# place = "My city is "+place
return place
print(myFunc(city))
sys.stdout.flush()