我首先加载模块时做一些初始化的东西.问题是它以某种方式导入了两次,我无法弄清楚原因.我认为它可能使用不同的路径导入,如下例所示:
a.py:
from apps.blog import models
...
Run Code Online (Sandbox Code Playgroud)
b.py:
from blog import models
...
Run Code Online (Sandbox Code Playgroud)
我插入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可能会将源文件视为两个不同的文件,从而单独导入它们.这可能是因为符号链接的文件/目录,或并排的不同版本,或PYTHONPATH中的重叠目录,很难说.
跟踪此问题的一种方法是使用交互式调试器.import pdb; pdb.set_trace()在文件的顶层添加一行,并在交互式shell中输入bt以获取应显示导入链的回溯.继续c.当第二次导入文件并激活调试器时,请bt再次尝试并比较两个输出,这可能会显示问题.
| 归档时间: |
|
| 查看次数: |
3626 次 |
| 最近记录: |