我有一个名为 的本地模块tokenize.py
,它掩盖了一个同名的标准库模块。我只是在尝试导入外部模块(sklearn.linear_model)时才发现这一点,该模块反过来会import tokenize
并希望获得标准库模块,但会获得我的本地模块。
这与当有同名的本地模块时如何在 Python 中访问标准库模块有关?,但设置不同,因为应用上述解决方案需要修改外部模块。
一个选项是重命名 local tokenize.py
,但我不希望这样做,因为“tokenize”最能表达模块的作用。
为了说明这个问题,这里是一个模块结构的草图:
\我的模块 \__init__.py \tokenize.py \use_tokenize.py
在 use_tokenize.py 中,有以下导入:
import sklearn.linear_model
调用时会导致以下错误python my_module/use_tokenize.py
:
Traceback (most recent call last):
File "use_tokenize.py", line 1, in <module>
import sklearn.linear_model
<...>
File "<EDITED>/lib/python2.7/site-packages/sklearn/externals/joblib/format_stack.py", line 35, in <module>
generate_tokens = tokenize.tokenize
AttributeError: 'module' object has no attribute 'tokenize'
导入外部模块时有什么方法可以抑制本地模块?
编辑:由于解决方案因 Python 版本而异的评论,将 python2.7 添加为标签