嗨,我是 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...
但是到底发生了什么?
什么是避免将来发生此类冲突的正确方法?
谢谢
编辑:我运行 python 3.3.2
请您参考如下方法:
你是对的,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
