Django无法导入子目录

时间:2017-01-08 23:25:23

标签: python django python-import

我几乎可以肯定我错过了一些明显的东西,但进口一直困扰着我。

我在一个更大的Django项目中有以下app结构:

\reporting\
\reporting\__init__.py
\reporting\<all other default django files>
\reporting\utils\__init__.py
\reporting\utils\base_file.py
\reporting\utils\appname_reporting.py

我正在尝试将appname_reporting导入我的\reporting\views.py

我尝试过import utils.appname_reportingfrom utils import appname_reportingfrom .utils import appname_reporting。所有这些都给我一个错误:ImportError: No module named 'appname_reporting'

没有其他文件导入appname_reporting.pyappname_reporting.py导入base_file.py

更新

我在appname_reporting中导入了views.py,但现在appname_reporting中的导入功能已损坏,表示无法导入base_file。在那里我只有import base_file,它在我的测试中失败了。我也试过import .base_file但它失败了。

1 个答案:

答案 0 :(得分:0)

您的/reporting环境变量中需要PYTHONPATH。检查它是否包含在

的输出中
import sys
for p in sys.path: 
    print p

之后你可以使用相对导入:

appname_reporting.py:
from . import base_file

views.py
from .utils import appname_reporting

请注意循环导入(例如,如果您要导入__init__.py文件中的内容)。

您可以使用详细开关运行Python:

python -v views.py

查看正在导入的内容以及以何种顺序。它会告诉您是否有循环导入。