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

Cli*_*pit 5 python

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

package/
    __init__.py
    file1.py
Run Code Online (Sandbox Code Playgroud)

__init__.py:

from file1 import AClass
__version__ = '1.0'
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

如果我使用from . import __version__file1.py它只是说ImportError: cannot import name __version__.

Fre*_*Foo 6

你有一个循环依赖,因为两个文件import互相尝试.例如,移动__version__到一个单独的模块,package/version.py然后在其他模块中导入

from .version import __version__
Run Code Online (Sandbox Code Playgroud)


Win*_*ert 4

尝试:

__version__ = '1.0'
from file1 import AClass
Run Code Online (Sandbox Code Playgroud)

您需要在导入模块之前分配常量,以便在您尝试导入它时它就位。

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