加载本地Python库

2 投票
2 回答
2452 浏览
提问于 2025-04-17 07:33

Python 2.7自带了一个叫做json的库。在我的PYTHONPATH中,我还添加了一些第三方的源代码,其中有一个也叫json的库。结果就是加载了错误的json库。那么,有什么好的方法可以避免这种情况呢?有没有办法让Python明确加载自带的库,比如用这种方式 from ? import json

2 个回答

2

在PYTHONPATH上,真的没有好的办法让多个模块使用相同的名字。这意味着你可能需要把第三方的json模块移动到一个不在PYTHONPATH上的地方,然后用其他方法来导入它。

最简单的办法就是把第三方的json模块放到它当前所在位置的一个子目录里,然后通过在这个子目录里添加一个叫做 __init__.py 的文件来把这个子目录变成一个模块。

如果你把这个新目录命名为'thirdparty',那么你就可以用 from thirdparty import json 来导入你的第三方json模块,而 import json 则总是会导入Python自带的json模块。

另外,你也可以把这个模块重命名为一个不会冲突的名字。

2

你可以试试

from path import json as anotherjson

这样可以解决命名空间冲突的问题。

另外,你还可以看看关于相对导入和绝对导入的讨论。

里面提到:

在Python 2.5中,你可以通过使用future模块中的absolute_import指令来切换导入的行为为绝对导入。这种绝对导入的行为将在未来的版本中成为默认设置(可能是Python 2.7)。一旦绝对导入成为默认,导入字符串将始终找到标准库的版本。建议用户尽可能多地使用绝对导入。

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')

撰写回答