自动从python中的包中的所有模块导入函数

时间:2014-07-07 21:43:58

标签: python

我有一个Python实用程序库pfacets。该库使用每个模块一个功能的结构,其模块名称与函数相同。我想将此库中的所有函数公开为pfacets模块的属性。目前,pfacets/__init__.py看起来像这样:

from func1 import func1
from func2 import func2
...

有没有办法自动执行此操作,以便我不必维护此列表?我试过了:

for p in glob.glob(os.path.join(os.path.dirname(__file__), '*.py')):
  if not os.path.basename(p).startswith('__'):
    name = os.path.basename(x)[:-3]
    __import__(name, globals(), locals(), [name])

我原以为在列表中有name(第4个arg到__import__)会处理这个,但是它没有用 - 名字被绑定到模块,而不是功能

1 个答案:

答案 0 :(得分:1)

不要这样做。假设文件被删除或重命名。如果发生这种情况,它的功能永远不会被导入,在客户端代码尝试引用它之前你不会知道。

记住the Zen of Python:"明确比隐含更好。"要明确。