繁体   English   中英

第 25 行 SyntaxError: 'await' 函数外部 Pyscript

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM