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