如何导入__init__.py中定义的变量?

时间:2012-09-05 15:55:40

标签: python

我对导入工作有点困惑。假设:

package/
    __init__.py
    file1.py

__init__.py

from file1 import AClass
__version__ = '1.0'

file1.py

Class AClass(object):
    def bar():
        # I want to use __version__here, but don't want to pass
        # it through the constructor. Is there any way?
        pass

如果我在from . import __version__中使用file1.py,则只会说ImportError: cannot import name __version__

2 个答案:

答案 0 :(得分:6)

你有一个循环依赖,因为两个文件互相尝试import。将__version__移至单独的模块,例如package/version.py,然后使用

将其导入其他模块
from .version import __version__

答案 1 :(得分:3)

尝试:

__version__ = '1.0'
from file1 import AClass

您需要在导入模块之前分配常量,以便在尝试导入模块时将其保留到位。

编辑: larsmans建议避免循环依赖是一个好主意。