将导入的模块排除在python包名称空间之外

将导入的模块排除在python包名称空间之外,python,Python,我注意到,有时如果在包/模块上调用dir(),您会在名称空间中看到作为实现的一部分导入的其他模块,这些模块不适合您使用。例如,如果我从PyPI安装fish包并导入它,我会看到fish.sys,它只是指内置的sys模块 我的问题是这是否合理,如果不合理怎么办 我不认为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量太相关,因为这只会影响X import*中的行为。我看到的选择是: 更好地构建您的包,并且至少将名称空间混乱向下推到子模块中 在包中使用impo

我注意到,有时如果在包/模块上调用
dir()
,您会在名称空间中看到作为实现的一部分导入的其他模块,这些模块不适合您使用。例如,如果我从PyPI安装fish包并导入它,我会看到
fish.sys
,它只是指内置的
sys
模块

我的问题是这是否合理,如果不合理怎么办

我不认为
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量太相关,因为这只会影响X import*
的行为。我看到的选择是:

  • 更好地构建您的包,并且至少将名称空间混乱向下推到子模块中
  • 在包中使用
    import X as\u X
    将实现细节与包API区分开来
  • 从函数内部导入内容(blegh)
我的问题是这是否合理

这是理智的。执行
importfish
操作只会在名称空间中添加一个名称,而不是“名称空间混乱”。这几乎是模块背后的大创意,将许多东西归为一个名称

当您想了解模块的功能时,请查看文档或致电
帮助
,不要执行
目录


Python中的所有名称都存储在dictonary中。这意味着无论你看到多少个名字,查找其中一个都需要固定的时间。所以也没有任何形式的速度缺陷。

我不明白。如果它不适合您使用,请不要使用。我会在可用时查看文档和帮助,但是
dir
很方便,例如,如果我一直忘记一些长函数名。是的,我不是真的关心速度或任何东西,只是整理包的组织。