5

我对导入的工作方式有点困惑。认为:

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__

4

2 回答 2

6

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

from .version import __version__
于 2012-09-05T15:58:26.863 回答
4

尝试:

__version__ = '1.0'
from file1 import AClass

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

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

于 2012-09-05T15:58:40.013 回答