在声明装饰器的文件中导入模块

时间:2012-06-04 19:45:01

标签: python decorator

这是我的文件结构:

annotations
    Helper.py
    annotations.py
test
    HelloWorld.py

这是HelloWorld.py,一个简单的HelloWorld类:

from annotations.annotations import annie

class HelloWorld:
    @annie.mydecorate
    def something():
        echo 'Hello World'

annotations.py中,我只是声明了一些简单的装饰器:

from annotations.Helper import Helper

class annie:
    @staticmethod
    def mydecorate(func):
        Helper.prepare()
        print func.__name__

我在这里收到错误No such module: Helper。我想这是在加载模块HelloWorld时发生的,它正在加载注释模块,但是在加载模块期间正在调用该函数,此时未加载Helper模块。我不确定我是多么正确,但我只是在寻找解决方案。

问题还有别的吗?我可以导入模块,就像我在一个声明装饰器的文件中一样吗?任何帮助将不胜感激。

此致 罗汉

2 个答案:

答案 0 :(得分:2)

annotations.py中,尝试:

import Helper

或(相对导入,Python 2.5及更高版本)

from . import Helper

答案 1 :(得分:0)

试试这个:

annotations
    Helper.py
    annotations.py
    __init__.py
HelloWorld.py