Python导入执行本地文件



嗨,我是Python的新手,我想详细了解以下内容:

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

#!/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

您是对的,当前目录中的模块首先加载。

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

from html.parser import tokenize

而不是:

import tokenize

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

from html.parser import tokenize as ext_tokenize

最新更新