我正在尝试从名为template的文件夹导入,其结构类似于
controller/
/__init__.py
/login.py # <- I'm here
template/
/__init__.py # from template import *
/template.py # contains class Template
python似乎能够看到need类但无法导入它,这是login.py代码
import webapp2
import template
class Login(webapp2.RequestHandler):
#class Login(template.Template):
def get(self):
self.response.out.write(dir(template))
打印
['Template', 'Users', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', 'jinja2', 'os', 'template', 'urllib', 'webapp2']
切换导入行
import webapp2
import template
#class Login(webapp2.RequestHandler):
class Login(template.Template):
def get(self):
self.response.out.write(dir(template))
打印
class Login(template.Template):
AttributeError: 'module' object has no attribute 'Template'
我做错了什么?感谢
编辑:我创建了另一个名为index的文件夹,其中包含
index/
/__init__.py # from index import *
/index.py # class Index
/index.html
index.py中的代码是
from template import Template
class Index(Template):
def get(self):
self.render("/index/index.html")
此代码只是没有任何错误,但是一个索引控制器文件夹失败
答案 0 :(得分:5)
问题在于template/__init__.py
:
from template import *
它不会从您认为的位置导入 - 它是从本身导入所有内容,因为拥有一个名为“template”且带有__init__.py
的文件夹定义了一个名为“模板”的模块 - 它优先于其内部的模块,也称为“模板”。你需要明确地告诉Python你需要内部模块,你可以这样做:
from .template import *