我有这段代码:
import jinja2
import webapp2
import os
from google.appengine.ext import db
import feedparser
from xml.dom import minidom
from google.appengine.api import memcache
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)
class News(db.Model):
title = db.StringProperty(required=True)
description = db.StringProperty(required=True)
url = db.StringProperty(required=True)
imageurl = db.StringProperty(required=True)
feeds = [ 'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=e&ict=ln&output=rss' # Entertainment
'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=snc&ict=ln&output=rss' # Science
'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=s&ict=ln&output=rss' # Sports
'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=b&ict=ln&output=rss' # Business
'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=tc&ict=ln&output=rss' # Technology
]
def render_str(template, **params):
t = jinja_env.get_template(template)
return t.render(params)
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.write(feedparser.__file__)
self.response.write(render_str('mainpage.html'))
class Entertainment(webapp2.RequestHandler):
def get(self):
rssfeed = feedparser.parse(feeds[0])
self.response.write(rsfeed.entries[0].title)
self.response.write(rsfeed.entries[0].link)
self.response.write(rsfeed.entries[0].published)
self.response.write(rsfeed.entries[0].description)
app = webapp2.WSGIApplication([('/', MainPage),
('/entertainment', Entertainment)
], debug = True)
mainpage.html
除了五个<p></p>
标记外,没有任何内容,其中一个标记已超链接到/entertainment
。
当我运行它并点击超链接的段落时,我得到了这个
AttributeError: 'module' object has no attribute 'parse'
我已关注this question,这就是我在get
MainPage
打印出文件路径的原因。
我的文件夹结构是:
模板
的app.yaml
feedparser.py
newsapp.py
newsapp.pyc
第一次运行它时,feedparser指向C:\Users\IBM_ADMIN\Downloads\7c\News Aggregator GAE\feedparser.pyc
。这是错误的,所以我删除了.pyc
文件,然后指向C:\Users\IBM_ADMIN\Downloads\7c\News Aggregator GAE\feedparser.py
。但它仍然给出了相同的错误,并再次生成.pyc
文件。我知道它是生成的,因为我正在编译feedparser文件,但为什么feedparser模块指向该位置?我怎样才能解决这个错误?
答案 0 :(得分:0)
GAE应用程序代码不一定能够作为独立应用程序运行。
在本地执行它的正确方法是通过SDK的本地开发服务器,请参阅Using the Local Development Server。
本地开发服务器将正确设置执行环境,以便不会意外地到达应用程序之外的模块。它应该解决您的导入问题。