Python 2.7.3 Flask ImportError:没有名为的模块

时间:2014-11-13 11:29:52

标签: python flask

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

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

所以,我在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)

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

其他人提到了个别错误,但了解整体情况会有所帮助。首先,让我们假设以下结构:

/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应用程序。

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