3

我正在尝试从名为 template 的文件夹中导入,该文件夹的结构类似于

controller/
          /__init__.py
          /login.py # <- I'm here
template/
        /__init__.py # from template import *
        /template.py # contains class Template

python好像能看到需要的类但是导入失败,这是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")

此代码正常工作,没有任何错误,但一个索引控制器文件夹失败

4

1 回答 1

5

问题是什么时候template/__init__.py

from template import *

它不是从您认为的地方导入 - 它是从自身导入所有内容,因为有一个名为“模板”的文件夹__init__.py定义了一个名为“模板”的模块 - 它优先于其中也称为“模板”的模块。你需要明确告诉 Python 你想要内部模块,你可以这样做:

from .template import *
于 2012-07-28T08:28:12.703 回答