从子模块导入变量到django中的__init__.py

时间:2016-03-29 03:53:05

标签: python django

我正在经历一个我无法从__init__.py导入变量的问题。我谷歌我的问题,但我找不到任何我能理解的答案。

我的模块结构是:

my_module/
    __init__.py
    sub_module/
        __init__.py
        module_file.py

我的文件中的内容是:

# my_module/__init__.py
from sub_module.module_file import show_variable

# sub_module/module_file.py
show_variable = "string needs to display"

但是当我尝试从 sub_module

访问变量时
from my_module import show_variable

通过错误

ImportError: cannot import name show_variable

有没有办法通过__init__.py文件访问我的变量? 等待你的宝贵回应。谢谢

1 个答案:

答案 0 :(得分:0)

你的例子应该有用。

这对我有用(2.7.6):

# my_module/__init__.py
from sub_module.module_file import show_variable

# my_module/sub_module/__init__.py (empty)

# my_module/sub_module/module_file.py
show_variable = 'string needs to display'

# main.py
from my_module import show_variable
print show_variable

来自my_module的父目录:

>>> from my_module import show_variable
>>> print show_variable
string needs to display

您也可以尝试使用此变体:

# my_module/__init__.py
from sub_module import show_variable

# my_module/sub_module/__init__.py
from .module_file import show_variable

也许是关于你如何在Django下设置你的包。您的文件在哪里加载my_module相对于my_module包?

我以前用过这个来将单个模块重构为一个包含多个文件的包,同时保持一个替代品。