[英]line 25 SyntaxError: 'await' outside function Pyscript
我的任務是構建一個使用 PyScript 執行線性回歸預測的項目,所以我在 Javascript 和面板的幫助下使用了 scikit-learn 來做到這一點。 這是我的完整代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Linear Regression Predict</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css"/>
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vega@5"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vega-lite@5"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vega-embed@6"></script>
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.js"></script>
<script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.js"></script>
<script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js"></script>
<script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/@holoviz/panel@0.13.0/dist/panel.min.js"></script>
<script type="text/javascript">
Bokeh.set_log_level("info");
</script>
<py-env>
- numpy
- pandas
- scikit-learn
- panel==0.13.1a2
</py-env>
</head>
<body style="background-color:rgb(255, 255, 255)">
<h1>Upload CSV</h1>
<div id="fileinput"></div>
<div id="upload"></div>
<div id="to_prdict"></div>
<div id="op"></div>
<p id="regression-op"></p>
<py-script>
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from panel.io.pyodide import show
import numpy as np
import panel as pn
fileInput = pn.widgets.FileInput(accept=".csv")
uploadButton = pn.widgets.Button(name="Show Prediction",button_type='primary')
to_pred = pn.widgets.Spinner(name="Total Installs",value=500,step=50,start=50)
def process_file(event):
if fileInput.value is not None:
data = pd.read_csv(io.BytesIO(fileInput.value))
x = data[['High']]
y = data[['Volume']]
lr = LinearRegression()
lr.fit(x,y)
y_hat = lr.predict(np.array(to_pred.value).reshape(1,-1))
reg_op = Element('regression-op')
reg_op.write(y_hat)
await show(fileInput,'fileinput')
await show(uploadButton,'upload')
await show(to_pred,'to_predict')
uploadButton.on_click(process_file)
</py-script>
</body>
</html>
當我檢查網站時,會顯示此錯誤:
JsException(PythonError: Traceback (most recent call last): File "/lib/python3.10/site-packages/_pyodide/_base.py", line 428, in eval_code .compile() File "/lib/python3.10/site-packages/_pyodide/_base.py", line 249, in compile self._gen.send(self.ast) File "/lib/python3.10/site-packages/_pyodide/_base.py", line 158, in _parse_and_compile_gen return compile(mod, filename, mode, flags=flags) File "", line 25 SyntaxError: 'await' outside function )
我不確定是什么導致了這個錯誤,因為我的語法沒有錯誤。
您的代碼有多個問題。
1)導入異步
使用異步函數的 PyScript 應用程序需要此包。
import asyncio
2) 調用異步函數
您的代碼在未聲明為異步的函數中使用了 await。 更改您的代碼:
async def init():
uploadButton.on_click(process_file)
await show(fileInput,'fileinput')
await show(uploadButton,'upload')
await show(to_pred,'to_predict')
init()
3) 未定義元素
您的代碼引用了一個未定義的元素to_predict
。 我不確定那是,但您需要將該元素添加到您的代碼中。
await show(to_pred,'to_predict')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.