Python 将导入的模块隐藏到解释器

Python 将导入的模块隐藏到解释器,python,ipython,Python,Ipython,我构建了一个模块,它使用一些不同的模块来完成各种任务。当我在IPython中导入模块并列出可用的自动完成功能时,这些外部模块都包含在该列表中。有没有可能以某种方式隐藏它们?在Python中,模块可以定义一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量,这是一个名称列表,当有人 from module import * IPython可以使用相同的变量来限制完成,尽管默认情况下不会这样做。要在运行时

我构建了一个模块,它使用一些不同的模块来完成各种任务。当我在IPython中导入模块并列出可用的自动完成功能时,这些外部模块都包含在该列表中。有没有可能以某种方式隐藏它们?

在Python中,模块可以定义一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>变量,这是一个名称列表,当有人

from module import *
IPython可以使用相同的变量来限制完成,尽管默认情况下不会这样做。要在运行时启用此功能,请设置:

get_ipython().Completer.limit_to__all__ = True
或者,要将其永久设置,请将以下内容添加到您的
ipython\u config.py

c.IPCompleter.limit_to__all__ = True

当然不是,但我不是伊普顿专家。一个难看的解决方法是创建一个新模块,从您提到的模块导入您想要的内容,然后使用这个新模块而不是另一个模块。另一个解决方法是重命名
import
s。例如,如果使用
moduleA
作为帮助程序,请执行
import moduleA as\u moduleA
。那么,只有当您试图访问以
开头的属性时,自动完成才会成为一个问题。感谢您(按照互联网标准)回答了这样一个老问题!为什么IPython默认不这样做?只是好奇-我敢打赌这是一个很好的理由,我也很想知道。主要是因为
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>通常维护得不太好,而且与
\uuuuuuuuuuuuuuuuuuuuuuuuu。您可以看到补丁和进一步的讨论。