python - 多次导入模块

标签 python django

我在第一次加载模块时做一些初始化工作。问题是不知何故它被导入了两次,我不明白为什么。我认为它可能是使用不同的路径导入的,如本例所示:

a.py:

from apps.blog import models
...

b.py:

from blog import models
...

我在我的模块中插入了 print __name__ ,它打印了两次 blog.models ,所以事实证明问题不在导入路径中。
那么,一个模块被多次导入还有其他原因吗?

更新: 我没有提到我正在使用 django。我认为这个问题与 django 的 manage.py 脚本有关: https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py

最佳答案

通常 Python 不应两次导入模块,无论绝对/相对引用如何。 Python 很可能将源文件视为两个不同的文件,因此分别导入它们。这可能是因为符号链接(symbolic link)的文件/目录,或并排的不同版本,或 PYTHONPATH 中的重叠目录,这很难说。

跟踪此问题的一种方法是使用交互式调试器。添加一行 import pdb; pdb.set_trace() 在您的文件的顶层,并在交互式 shell 中输入 bt 以获得应显示导入链的回溯。继续 c。当第二次导入文件并激活调试器时,再次尝试 bt 并比较两个输出,这可能会揭示问题。

关于python - 多次导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4897232/

相关文章:

python - 如何停止在 Django 2.* 管理面板中记录最近的操作和历史记录?

python - 使用 Pycharm(IDE) 运行 Pytest

python - 表 'MyDjango.django_admin_log' 不存在

python - Django ModelAdmin能否在 "add"和 "change"页面显示外键字段?

python pip安装scipy报错

Django 模型 - 如何使一个模型中的字段依赖于另一个模型中的字段(即外键)?

带有 Jinja2 : Contrib app Admin not working 的 Django 1.8

python - "Process finished with exit code -2147483645"皮查姆

python - 返回对应于行中最大值的列标题

python - 使类中的函数只能在不调用类的情况下访问