python导入执行本地文件

时间:2014-01-23 13:01:05

标签: python

您好我是python的新手,我想详细了解以下内容:

我写了一个脚本,比如'foo.py',它使用了python html解析器,即

#!/usr/lib/python
from html.parser import HTMLParser    # <-- executes ./tokenize.py ?!
...

无意中,在当前目录中有另一个名为'tokenize.py'的python脚本。通过执行foo.py,导入行也会触发tokenize.py来执行。我想本地目录具有优先权,html.parser模块也有一个tokenize.py ......

但到底发生了什么?

未来避免此类冲突的正确方法是什么?

THX

编辑:我运行python 3.3.2

1 个答案:

答案 0 :(得分:1)

你是对的,modules in the current directory are loaded first

避免这种情况的正确方法是始终以全名导入模块。在您的情况下,在html.parser中,您应该像这样导入tokenize

from html.parser import tokenize

而不是:

import tokenize

如果html.parser是您无法控制的外部模块,只需将tokenize.py重命名为其他内容,例如:

from html.parser import tokenize as ext_tokenize