【问题标题】:Python 2.7.3 Flask ImportError: No module namedPython 2.7.3 Flask ImportError:没有命名模块
【发布时间】:2014-11-13 11:29:52
【问题描述】:

我有一个出现此错误的 Flask 应用程序:

ImportError: No module named annotaria, referer: http://ltw1413.web.cs.unibo.it/

所以,我在网络服务器中的根是:

/home/web/ltw1413/html

在我的 html 文件夹中:

  • 一个名为“annotaria”的文件夹
  • 一个名为“wsgi.wsgi”的文件 .wsgi

我的文件 .wsgi 是:

import sys
sys.path.insert(0, '/home/web/ltw1413/html')
from annotaria import app as application

在我的文件夹“annotaria”中,我有:

  • “静态”文件夹:在样式表和 js 中
  • “模板”文件夹:在 html 中
  • “run.py”:我有我的应用程序的文件 python

run.py 是这样的:

from pydoc import html
from annotaria import app
from flask import Flask, render_template, redirect, request
import json
import urllib2
import urlparse
import re
import string
import os
from SPARQLWrapper import SPARQLWrapper, JSON
from rdflib import Graph, BNode, Literal, Namespace
from time import strftime
import urllib2
import BeautifulSoup

app = Flask(__name__)

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


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


# other app.route()...

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

如何找到解决方案?我的错误在哪里?

【问题讨论】:

  • 你在 annotaria 文件夹中有一个__init__.py
  • 不,我没有!只有 run.py 里面有视图!是错误吗?
  • 为了使文件夹成为 Python 包,您必须添加 __init__.py。它可以是空的。之后,您将能够从那里导入。

标签: python flask


【解决方案1】:

这里有很多错误... 在路径上找不到annotaria(这就是为什么它说...好吧..就是这样)。

在您的代码中,您还重新定义了 app:您从 annotaria 导入它,然后在 app = Flask(.. 中重新定义它。

【讨论】:

  • 好的,谢谢您的回答!我在 .wsgi 中修改了 sys.path.insert(0, '/home/web/ltw1413/html/annotaria') 中的路径,并在 run.py 中添加了注释“#from annotaria import app”,但不起作用。同样的错误:ImportError: No module named annotaria, referer: ltw1413.web.cs.unibo.it
【解决方案2】:

其他人提到了个别错误,但了解大局会有所帮助。首先,我们假设如下结构:

/home/web/ltw1413/html
- wsgi.wsgi
- annotaria/
  - __init.py__
  - run.py
  - static/
  - templates

就像 Klaus 提到的,你需要 __init__.py 告诉 Python annotaria 是一个有效的包。但是你的wsgi.wsgi 文件需要从运行模块中导入应用程序:

from annotaria.run import app as application

您还需要从run.py 中删除这个不必要的导入,因为您实例化了一个新应用程序:

from annotaria import app

因为没有要导入的应用程序,所以您实例化了一个新的 Flask 应用程序。

最后,确保在开始部署之前手动运行应用程序。

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2019-12-01
    • 2014-03-05
    相关资源
    最近更新 更多