在这种情况下如何配置__init__.py?

时间:2013-02-04 13:36:12

标签: python python-2.7

我有一个具有以下结构的python应用程序。

/app
  /models
    __init__.py
    profile.py
  /views
    __init__.py
    index.py
    login.py
  __init.py
main.py

目前,这三个__init__.py文件为空。

在像index.py这样的文件中,我有几个类。

class IndexHandler(webapp2.RequestHandler):
    #blah blah

我在__init.py__文件中写了什么,以便我可以调用profile.pyindex.py等中的类,而无需输入完整的包路径?

2 个答案:

答案 0 :(得分:1)

从技术上讲,您不必在__init__.py文件中放置任何内容。您应该可以从main.py文件中导入模型,只要它位于app文件夹中,并使用以下函数:

import models    
models.profile.whatever

如果main.py位于/ app文件夹的“上方”,则/ app文件夹中需要__init__.py个文件。那么你可以这样做:

import app
app.models.profile.whatever

答案 1 :(得分:1)

Python中的命名空间是显式的。在每个__init__.py文件中,导入您希望在该包的命名空间中可用的任何模块,函数和类。

例如,如果您希望app包中有index成员,请/app/__init__.py

from views import index

或者,如果您希望类本身成为命名空间的一部分:

from models.views import IndexHandler

这样你就可以:

import app
handler1 = app.index.IndexHandler()  # example 1
handler1 = app.IndexHandler()  # example 2