【问题标题】:Django Cannot Import File in SubdirectoryDjango 无法在子目录中导入文件
【发布时间】:2023-03-26 06:49:01
【问题描述】:

我几乎可以肯定我遗漏了一些明显的东西,但是导入已经困扰了我一段时间。

我在一个较大的 Django 项目中有以下应用程序结构:

\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.py。而appname_reporting.py 导入base_file.py

更新

我在views.py 中导入了appname_reporting,但现在我在appname_reporting 中的导入失败,说它无法导入base_file。在那里我只有import base_file,它在我的测试中失败了。我也试过import .base_file,但失败了。

【问题讨论】:

  • 完整的回溯通常非常重要..

标签: python django python-import


【解决方案1】:

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

的输出中
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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 2021-07-06
    • 1970-01-01
    • 2020-09-11
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多