我几乎可以肯定我错过了一些明显的东西,但进口一直困扰着我。
我在一个更大的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_reporting
,from utils import appname_reporting
和from .utils import appname_reporting
。所有这些都给我一个错误:ImportError: No module named 'appname_reporting'
。
没有其他文件导入appname_reporting.py
。 appname_reporting.py
导入base_file.py
。
更新
我在appname_reporting
中导入了views.py
,但现在appname_reporting
中的导入功能已损坏,表示无法导入base_file
。在那里我只有import base_file
,它在我的测试中失败了。我也试过import .base_file
但它失败了。
答案 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
查看正在导入的内容以及以何种顺序。它会告诉您是否有循环导入。