繁体   English   中英

Flask 尝试运行 python 脚本时出现内部服务器错误

[英]Internal server error with Flask trying to run python script

我已经设置了一个基本的 Flask 页面 index.html 来运行我的 app.py 脚本。 目录结构是包含 app.py 的 myapp 文件夹、包含 index.html 的模板文件夹和一个 venv 文件夹。 我试图让我的 app.py 脚本(它下载一个 excel 文件,它在 ipython 中单独运行时工作)在单击 GO 按钮时运行。 我可以很容易地让 Flask 在 localhost 上运行,并且 index.html 出现在按钮上,但是当我点击它时,我得到 - “内部服务器错误服务器遇到内部错误,无法完成您的请求。要么服务器过载或者应用程序中存在错误。”

我已经尝试了很长时间并查看了其他类似的问题,但无济于事。 app.py 的代码如下:

            #!/usr/bin/env python

            from flask import Flask, render_template

            app = Flask(__name__)


            @app.route('/')
            def index():
                return render_template('index.html')


            @app.route('/app', methods=['GET', 'POST'])
                def app():

                import selenium
                from selenium import webdriver
                from selenium.webdriver.support.ui import Select
                from selenium.webdriver.chrome.options import Options
                import lxml
                import time
                import datetime
                import pandas as pd
                from bs4 import BeautifulSoup
                options = Options()
                options.headless = True
                driver = webdriver.Chrome(chrome_options=options)
                driver.get('https://widget.sentryd.com/widget/#/15490A29-95E3-4296-999E-28D0B35E0D12/AUD-USD/4')
                time.sleep(10)
                soup1 = BeautifulSoup(driver.page_source, 'lxml')
                table1 = soup1.find_all('table')
                df1 = pd.read_html(str(table1[1]), header=0)
                df1[0].columns = ['Delta_put', 'Price_put', 'Strike', 'Price_call', 'Delta_call', 'Vol', 'Skew', 'Vega']
                df1[0].drop(0, inplace=True)
                writer = pd.ExcelWriter('options_{}.xlsx'.format(pd.datetime.today().strftime('%d %b %y')), engine='xlsxwriter')
                df1[0].to_excel(writer, 'Sheet1')
                writer.save()

            return 'Downloading...'


            if __name__ == '__main__':
            app.run()

index.html 的代码是

<form action="/app" method="POST">
<input type="submit" value="GO">
</form>

任何提示将不胜感激。 谢谢

您应该将错误输出放在问题中而不是注释中。 这将有助于其他人回答您的问题,因为并非每个人都会阅读评论。

但是,根据错误,您似乎没有安装运行应用程序所需的模块和包。

您已在此处导入它们:

@app.route('/app', methods=['GET', 'POST'])
    def app():
        import selenium
        from selenium import webdriver
        from selenium.webdriver.support.ui import Select
        from selenium.webdriver.chrome.options import Options
        import lxml
        import time
        import datetime
        import pandas as pd
        from bs4 import BeautifulSoup

您应该使用首选安装方法安装这些模块。 您可以使用pip来安装它们。

因此,转到您的项目环境,打开控制台并安装它们。

pip install beautifulsoup4
pip install selenium
pip install pandas
pip install lxml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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