当有同名的包时,如何在 Python 3 中加载模块?

Posted

技术标签:

【中文标题】当有同名的包时,如何在 Python 3 中加载模块?【英文标题】:How to load a module in Python 3 when there is a package with the same name? 【发布时间】:2020-03-16 20:09:51 【问题描述】:

在处理一些遗留 Python 包时,我注意到有一个子包隐藏一个具有相同名称的模块。这是显示问题的简化文件层次结构:

t/
t/__init__.py
t/u/
t/u.py
t/u/__init__.py

如你所见,有一个python模块t/u.py还有一个子包t/u/看起来像一个标准的import语句加载子包:

$ python3
Python 3.5.2 (default, Oct  8 2019, 13:06:37) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import t.u
__init__.py
>>> 

但是,有没有办法导入模块 t/u.py 来代替?

【问题讨论】:

【参考方案1】:

也许 from t import ufrom t.u import u 有效

【讨论】:

以上是关于当有同名的包时,如何在 Python 3 中加载模块?的主要内容,如果未能解决你的问题,请参考以下文章

卸载包时如何在 pipenv 中自动删除依赖的 Python 包?

当用户使用 pip 卸载我的包时如何运行脚本?

在 npm 中发布新版本的包时出错

从 ASP.NET 执行 SSIS 包时出错

AndroidStudio自动导入包

在python程序编写过程中,如何解决模块名称冲突?