[英]How to import a user module which has the same name with a system module?
我有一個舊版python程序,該程序定義了一個模塊,該模塊的名稱與當前python中的系統模塊沖突,最簡單的方法是解決此問題? 該模塊已在很多地方導入,因此,如果不需要更改舊的python源代碼,那就太好了。
您可以使用imp module
創建自定義導入例程。 例如,在這里我要導入一個名為string
的模塊,該模塊會遮蓋真實的字符串模塊:
import imp
def user_import(name, path):
mod_file, mod_path, mod_desc = imp.find_module(name, [path])
return imp.load_module(name, mod_file, mod_path, mod_desc)
# load the real 'string' module
import string
print string.digits
# load the user 'string' module which lives under the path './foo'
mod = user_import('string', './foo')
print mod.digits
輸出:
0123456789
thesearenotdigits
導入模塊時,您始終可以重命名模塊,例如:
將sys導入為realsys
realsys.exit(1)
似乎您必須對名稱已重載的系統模塊或模塊進行此操作,具體取決於哪個模塊導致的痛苦最少。
最重要的是,創建模塊時,最好完全限定名稱,例如,可以創建mylib.sys
而不是創建sys
(在此示例中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.