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