开发中模块名冲突可有解决办法(python)?

如题所述

假如有两个同名的模块,那么你只能导人它们中的一个——默认情况下,Python总是会选择在模块搜索路径sys.path中最左边的那一项。如果你偏爱的模块和顶层脚本在同一目录下,那就不成问题;由于顶层脚本的主目录总是模块搜索路径中的第一项,因此它的内容总是会首先被自动定位。然而对于跨目录的导入,模块搜索路径的线性本质意味着同名的文件会产生冲突。
要修复这一冲突,要么避免同名文件。如果你需要同时访问两个同名的文件,那么就要把两个源文件分别放入子目录中,这样包导入目录名称将使得模块引用唯一。只要外围的包目录名称是唯一的,你就能访问同名模块中的任意一个,或是全部的两个。注意,如果你不小心为自己的模块使用了一个名称,而它碰巧和你需要使用的标准库模块的名称相同,那么也会出现这一问题。这是因为程序主目录(或是模块路径中靠前的另一个目录)下的本地模块会隐藏和替换标准库模块。要修复这种覆盖,要么避免使用和你需要的另一模块相同的名称,要么把模块放到一个包目录下然后使用Python 3.X的包相对导入模型(包相对导入在2.X版本中是一个可选的功能)。在包相对导入模型下,普通导入会跳过包目录,因此你可以获取标准库版本,但在必要时特殊的点号开头导入语句仍然可以选取同名模块的本地版本。
温馨提示:答案为网友推荐,仅供参考