2011-12-02 34 views
2

Python 2.7自帶json庫。在我的PYTHONPATH中,我包含第三方來源,其中一個也被稱爲json。結果加載了錯誤的json庫。處理和避免類似上述情況的良好做法是什麼?有沒有辦法指示Python以這種方式顯式加載本地庫from ? import json加載本機Python庫

+0

我建議你嘗試並修改你的代碼,讓Python保持原樣。你將不得不修改你包含的每個新模塊來說明你的代碼。 – Blender

回答

2

你可以嘗試

from path import json as anotherjson 

這樣的命名空間衝突可以被刪除。

你也可以看到關於相對/絕對導入的討論。

它說:

在Python 2.5,你可以使用從未來進口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') 
2

真的是有與PYTHONPATH [docs]多個同名的模塊沒有什麼好辦法,這意味着你應該動第三方json模塊移動到不在PYTHONPATH上的替代位置,然後使用其他方法導入它。

最簡單的方法是將第三方json模塊移動到它所在位置的子目錄中,然後通過將__init__.py添加到它的子目錄中。

如果您將該新目錄命名爲'thirdparty',則可以使用from thirdparty import json導入第三方json模塊,並且import json將始終導入Python的json模塊。

或者,您可以將模塊重命名爲不衝突的內容。

相關問題