簡體   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