net*_*dur 3 python google-app-engine
我正在尝试从名为template的文件夹导入,其结构类似于
controller/
/__init__.py
/login.py # <- I'm here
template/
/__init__.py # from template import *
/template.py # contains class Template
Run Code Online (Sandbox Code Playgroud)
python似乎能够看到需要类但无法导入它,这是login.py代码
import webapp2
import template
class Login(webapp2.RequestHandler):
#class Login(template.Template):
def get(self):
self.response.out.write(dir(template))
Run Code Online (Sandbox Code Playgroud)
版画
['Template', 'Users', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', 'jinja2', 'os', 'template', 'urllib', 'webapp2']
Run Code Online (Sandbox Code Playgroud)
切换进口线
import webapp2
import template
#class Login(webapp2.RequestHandler):
class Login(template.Template):
def get(self):
self.response.out.write(dir(template))
Run Code Online (Sandbox Code Playgroud)
版画
class Login(template.Template):
AttributeError: 'module' object has no attribute 'Template'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?谢谢
编辑:我创建了另一个名为index的文件夹,其中包含
index/
/__init__.py # from index import *
/index.py # class Index
/index.html
Run Code Online (Sandbox Code Playgroud)
index.py中的代码是
from template import Template
class Index(Template):
def get(self):
self.render("/index/index.html")
Run Code Online (Sandbox Code Playgroud)
这段代码只是没有任何错误,但一个索引控制器文件夹失败
问题是什么时候template/__init__.py:
from template import *
Run Code Online (Sandbox Code Playgroud)
它不是从您认为的位置导入 - 它是从自身导入所有内容,因为有一个名为"template"的文件夹,其中__init__.py定义了一个名为"template"的模块 - 它优先于其内部的模块,也称为"模板".您需要明确告诉Python您需要内部模块,您可以这样做:
from .template import *
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |