您好我是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
答案 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