Python嵌套包问题

时间:2012-02-29 22:48:40

标签: python nested package

我一直试图解决这个问题,我必须遗漏一些基本的东西(原谅我,我对Python开发相对较新):

我有这样的包结构:

base
|
 -->util
    __init__.py
    Class1.py
    Class2.py
__init__.py
Main.py

我的课程相当温和:

class Class1(object):

    def __init__(self):

    # some methods...


class Class2(object):

    def __init__(self):

    # more methods...

Main.py中,我有:

import utils

if __name__ == '__main__':
    c1 = utils.Class1()
    c2 = utils.Class2()

我的PYTHONPATH设置为包括srcsrc\basesrc\base\utils。但是,Python在尝试运行Main.py时给出了这个错误:

AttributeError: 'module' object has no attribute 'Class1'

是否有人遇到此问题,你知道如何解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:5)

这与Java略有不同。在java中,每个文件通常都是一个类,在python中,每个文件都是一个模块。根据您在此描述的情景,您可以这样做:

import utils.Class1
import utils.Class2

if __name__ == '__main__':
    c1 = utils.Class1.Class1()
    c2 = utils.Class2.Class2()

你可以在这里做很多事情。例如,您可以拥有一个名为“resources”的模块,如下所示:

base ->
    utils ->
        resources.py

包含Class1和Class2。然后你可以做类似的事情:

import utils.resources


c1 = utils.resources.Class1()

等。但关键是class!= python中的文件

答案 1 :(得分:0)

您是否已将类导入到utils模块的 main .py中? 只需添加到utils / init .py:

from Class1 import Class1
from Class2 import Class2

然后在你的main.py中,“import utils”会将这些文件导入为utils.Class1等