除了几个方法之外,从模块导入所有内容

时间:2013-11-13 15:25:26

标签: python import

是否可以import来自现有Python模块的所有内容(*除外一些明确指定的方法?

(背景:针对推荐的Python实践,在FEniCS中常见from dolfin import *。一些方法名称包含字符串“Test”(例如,TestFunction())和被nose误认为是单位测试。)

3 个答案:

答案 0 :(得分:9)

是的,你可以define the __all__模块

添加

__all__ = ["echo", "surround", "reverse"] #Or whatever your module names are

到包含这些模块的文件,或者要从中导入的包的__init__.py

现在

from module import * 

仅导入 __all__

中指定的模块

答案 1 :(得分:9)

如果您无法访问模块,也可以从全局命名空间中删除这些方法或变量。以下是如何做到这一点:

to_exclude = ['foo']

from somemodule import *

for name in to_exclude:
    del globals()[name]

答案 2 :(得分:-1)

执行任何导入*通常不是一个好主意,因为这会导致与其他模块同名的模块出现问题。

您是说要为模块启用此功能,还是为现有模块执行此操作?

在没有修改模块的情况下,对于尚未设置的现有模块,没有任何方法(我知道)。