Python 2.7附带了json库。在我的PYTHONPATH中,我包含第三方来源,其中一个也称为json。结果加载了错误的json库。处理和避免上述情况的良好做法是什么?有没有办法指示Python以这种方式from ? import json
显式加载本机库。
答案 0 :(得分:2)
你可以尝试
from path import json as anotherjson
这样就可以删除命名空间冲突。
您还可以看到有关相对/绝对导入的讨论。
它说:
在Python 2.5中,您可以将导入行为切换为绝对导入 使用from future import absolute_import指令。这个 绝对导入行为将成为未来版本的默认行为 (可能是Python 2.7)。绝对导入是默认导入 string总能找到标准库的版本。这是建议的 用户应尽可能多地开始使用绝对导入。
from __future__ import absolute_import
# from standard path
import json as _json
# from a package
from pkg import json as pkgjson
另一种技术是使用imp模块
import imp
json = imp.load_source('json', '/path/to/json.py')
答案 1 :(得分:2)
在PYTHONPATH [docs]上有多个具有相同名称的模块没有好办法,这意味着您应该将第三方json模块移动到不在PYTHONPATH上的备用位置,然后导入它使用其他一些方法。
最简单的方法是将第三方json模块移动到它已经存在的位置的子目录中,然后通过向其添加__init__.py使该子目录成为模块。
如果您将此新目录命名为“thirdparty”,则可以使用from thirdparty import json
导入第三方json模块,import json
将始终导入Python的json模块。
或者,您可以将模块重命名为不冲突的内容。