Python 处理模块名冲突

Python 处理模块名冲突,python,python-3.x,python-import,Python,Python 3.x,Python Import,有时,应用程序和第三方软件包中的内部文件之间会发生模块名冲突。例如,当前文件夹中名为profile.py的文件将导致jupyter notebook崩溃,因为它试图导入它而不是自己的profile.py。从包用户的角度来看,什么是避免此问题的好方法?(或者这是包开发人员应该以某种方式防止的事情?) 注意:虽然由于应用程序和内置名称之间的冲突(例如,time.py或socket.py)会出现类似的问题,至少,标准库模块和其他内置对象的名称相对容易记住。当前目录是包含应用程序主脚本的目录。如果要避免

有时,应用程序和第三方软件包中的内部文件之间会发生模块名冲突。例如,当前文件夹中名为
profile.py
的文件将导致
jupyter notebook
崩溃,因为它试图导入它而不是自己的
profile.py
。从包用户的角度来看,什么是避免此问题的好方法?(或者这是包开发人员应该以某种方式防止的事情?)


注意:虽然由于应用程序和内置名称之间的冲突(例如,
time.py
socket.py
)会出现类似的问题,至少,标准库模块和其他内置对象的名称相对容易记住。

当前目录是包含应用程序主脚本的目录。如果要避免此目录中的名称冲突,请不要在其中放置任何模块

相反,使用名称空间。在主脚本的目录中创建一个唯一命名的包,并从中导入所有内容。主脚本应该非常简单,只包含以下内容:

if __name__ == '__main__':

    from mypackage import myapp

    myapp.run()
包内的所有模块也应使用
from
导入来访问包内的其他模块。例如,
myapp.py
可能包含:

from mypackage import profile