Python 2.7自帶json庫。在我的PYTHONPATH中,我包含第三方來源,其中一個也被稱爲json。結果加載了錯誤的json庫。處理和避免類似上述情況的良好做法是什麼?有沒有辦法指示Python以這種方式顯式加載本地庫from ? import json
。加載本機Python庫
2
A
回答
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模塊。
或者,您可以將模塊重命名爲不衝突的內容。
相關問題
- 1. 加載本機庫兩次
- 2. 動態加載本機庫
- 3. 多次加載本機庫
- 4. Applet不加載本機庫
- 5. Android中的本機庫加載斷點
- 6. java.lang.IllegalArgumentException:無法加載本機庫
- 7. SQLNestedException異常 - 未加載本機SSPI庫
- 8. Hadoop:無法加載本機hadoop庫
- 9. 未加載Maven的OpenCV本機庫
- 10. 本機庫sqljdbc_auth.dll已在另一個類加載器中加載
- 11. 無法加載本機庫:找不到依賴庫
- 12. python如何加載Boost.Python庫?
- 13. 無法加載本機DLL
- 14. 在Thread類中爲start0()本機方法加載本機代碼庫
- 15. Java錯誤本機庫已在另一個類加載器中加載
- 16. UnsatisfiedLinkError:本機庫sunmscapi.dll已在另一個類加載器中加載
- 17. java.lang.UnsatisfiedLinkError:本機庫:{...}。dll已經加載到另一個類加載器中
- 18. 調用加載另一個本機庫的本地庫時的JNI問題
- 19. 加載本地庫錯誤
- 20. 加載Windows本機Python模塊的15秒空閒延遲
- 21. 加載與本機依賴關係的clr庫
- 22. Java:重新使用已加載的本機庫?
- 23. 將數據庫記錄加載到本地主機
- 24. Glassfish的本機庫加載文件(.dll,的.so)
- 25. java.lang.UnsatisfiedLinkError:無法加載OneTick Java API本機庫libjomd.so/jomd.dll
- 26. Android Studio 1.3 RC1 NDK無法加載本機庫
- 27. NativeActivty將無法啓動 - 無法加載本機庫
- 28. 本機共享庫加載到Android中的速度較慢
- 29. 手動加載本機庫以繞過限制性環境
- 30. 從另一個Android應用程序加載本機共享庫
我建議你嘗試並修改你的代碼,讓Python保持原樣。你將不得不修改你包含的每個新模塊來說明你的代碼。 – Blender