簡體   English   中英

如何導入與系統模塊同名的用戶模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM