【问题标题】:Importing .py file is breaking flask app导入 .py 文件正在破坏烧瓶应用程序
【发布时间】:2018-01-29 21:37:37
【问题描述】:

我有一个非常简单的烧瓶应用程序,它在不同的文件夹中导入一个 py 文件并返回输出。这是我的 Flash 应用程序代码:

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def flask_test():
    # Imports login.py from python/libs folder
    from python.libs import login
    # input coming from a .php file 
    host = request.form.get('Distro','')
    #simple py file to test login and return pass or fail
    result = login.telnet_host(host)
    return result

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

我知道代码和烧瓶可以工作,因为如果我注释掉导入行并添加一些测试代码,我会得到正确的响应。我还在同一个文件夹上创建了一个 test.py 文件并使用了相同的导入命令并运行“python test.py”也可以正常工作。但是由于某种原因,flask.py 文件中的 import 语句不起作用。

如果我执行“python flask_home.py”,我不会收到任何错误并看到:

* Running on http://127.0.0.1:5000/

但是当我去网络并在主机字段中添加主机名并点击提交时,它给了我 500 服务器错误。同样,如果我注释掉导入行并添加测试代码,它就可以工作。我什至将文件移动到同一文件夹中并将导入行修改为“导入登录”,但它仍然无法正常工作。

有人知道为什么 import 会破坏它吗?我的 flask.py 文件在 /var/www 中,而我的 login.py 文件在 /var/www/python/libs 中。不幸的是,我无法将两者都移动到同一个文件夹中。请指教。

谢谢

【问题讨论】:

  • 使用app.run(debug=True) 运行并报告实际错误。
  • 我什么也没看到。我尝试通过网络浏览器和“python flask.py”它看起来一样,但有一个额外的行说“* Restarting with reloader”。有什么地方需要我去查看日志吗?

标签: python python-2.7 flask import


【解决方案1】:

flask_home.py同目录下,进入python shell,尝试导入from python.libs import login,看看login.py文件是否有语法错误。

确保您没有忘记将__init__.py 文件放入python/python/libs/ 文件夹中。

【讨论】:

  • 我在同一文件夹、python 和登录中都有 init.py。这样做不会返回任何结果: >>> from python.libs import login >>>
  • 尝试执行代码。并按照 sberry 告诉您的操作:使用 app.run(debug=True) 运行并在此处发布您遇到的真正错误。
  • 在 sberry 的评论下查看我的评论
  • 从你的shell运行login.telnet_host(host)时有什么异常吗?
  • 添加一些日志以查看您在 request.form 上收到的内容(此处的日志设置示例:gist.github.com/ibeex/3257877)。另外,您确定您收到的是 POST 请求吗?还要检查 request.args。 (见:stackoverflow.com/a/16664376/4271929
猜你喜欢
  • 2015-09-07
  • 2016-12-23
  • 1970-01-01
  • 2018-12-06
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
相关资源
最近更新 更多