2016-11-21 116 views
0

建设有从烧瓶教程说明一个小应用程序联机之后,我不断收到这样的ImportError:如何解决这个阻止我的代码执行的ImportError?

eloiim:~ iivri.andre$ export FLASK_APP=Minimalapp.py 
eloiim:~ iivri.andre$ flask run 
Traceback (most recent call last): 
    File "/usr/local/bin/flask", line 11, in <module> 
    sys.exit(main()) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 478,in main 
    cli.main(args=args, prog_name=name) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 345, in main 
    return AppGroup.main(self, *args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 696, in main 
    rv = self.invoke(ctx) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 1060, in invoke 
    return _process_result(sub_ctx.command.invoke(sub_ctx)) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke 
    return ctx.invoke(self.callback, **ctx.params) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke 
    return callback(*args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/click/decorators.py", line 64, in new_func 
    return ctx.invoke(f, obj, *args[1:], **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke 
    return callback(*args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 388, in run_command 
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 124, in __init__ 
    self._load_unlocked() 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 148, in _load_unlocked 
    self._app = rv = self.loader() 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 209, in load_app 
    rv = locate_app(self.app_import_path) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 89, in locate_app 
    __import__(module) 
ImportError: No module named Minimalapp.py 

这是我的代码:

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def IsSelf() : 
    return 'Hello 这是自' 

这里是我的LS-R输出也

eloiim:learnFlasC iivri.andre$ ls 
Hello.py  Minimalapp.py 
Http.py   resource_locator.py 

我不知道我做错了什么。有什么问题,我该如何解决它?

+1

这将是有益的,如果您还包括'ls'输出显示出'Minimalapp.py',与确切名称,存在于当前目录中。 (令人惊讶的是...... Flask文档告诉你在'FLASK_APP'中包含'.py'扩展名,但是随后调用'__import__',因为它需要* module *名称而不是*文件*名称,这意味着'.py'扩展名不应该存在;如果你的文件名是'Minimalapp.py',那么模块名称将是'Minimalapp')。 –

+0

@CharlesDuffy 'eloiim:learnFlasC iivri.andre $ ls' 'Hello.py' \t \t'Minimalapp.py' 'Http.py' \t \t \t'resource_locator.py' 这是LS输出。忽略其他文件 – siur

+0

我建议您在代码中使用“flask.run()”运行烧瓶以获取更多信息,尽管这不是一个好习惯。 –

回答

0

要使用烧瓶CLI

在命令行中,导航到该文件夹​​与您的项目,然后运行:

export FLASK_APP=hello.py 
flask run 

注意你所需要的“ py”为。应用程序运行脚本的名称应该是包含代码的脚本。在教程hello.py中,但是你可能被称为MinimalApp.py或类似的。您需要有一个新的Flask版本,0.11或更高版本,因为此cli是一项新功能。

使用app.run(),而不是新瓶的CLI

首先,你的文件夹中摆脱所有的东西或者开始一个新的文件夹。接下来,请确保您可以(在终端键入“蟒蛇”来访问REPL)没有任何错误,运行

import flask 
在Python REPL

。创建一个名为run.py的文件并粘贴以下内容:

保存。在你的终端,导航到包含文件的文件夹,然后运行

python run.py 
+0

什么是'REPL'? – wallyk

+0

在命令行中键入“python”。你会看到>>>。这是REPL。 –

+0

@ T.Arboreus它确实有效。谢谢。问题:我正在做烧瓶教程,并按照如何运行该程序的说明进行操作; '$ export FLASK_APP = Minimalapp.py','flask run'然而我得到了之前发布的错误。为什么会这样? – siur

相关问题