一个项目具有以下结构:得到一个模块的所有功能
modulename
├── __init__.py
│
├── one
│ ├── function_1.py
│ ├── function2.py
│ └─── __init__.py
│
└── two
├── another_function.py
├── yet_another_function.py
└─── __init__.py
每个.py
(除了__init__.py
的其是空的)具有沿行内容:
def foo(x):
return x
def bar(x):
return x + 2
要使用您以如下方式导入它的模块:import modulename.one.function1.foo
。我想要做的是在倒数第二位找到所有.py
文件名,例如function1
或another_function
。
建议的解决方案至今没有成功过:
dir(modulename.one)
导致['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
。help(modulename.one)
它实际上包含标题为PACKAGE CONTENTS
下的功能文件名称。我如何获得PACKAGE CONTENTS
的列表?
编辑:我可以(如有人建议)使用在__init__.py
的__all__
,但我宁愿一个简单的内置功能或模块。
这似乎是可行的,但据我了解,你必须自己写'__all__'?或者我误解了?我宁愿如果有一种方式来找出编程。 –
是的,你必须自己写'__all__'。但是,由于'__init __。py'是一个python模块,因此可以使用glob.glob和importlib.import_module来填充代码。 – Martin
这将是一个可能的解决方案(如果没有更好的答案张贴我会这样做)。我仍然会等待最终更简单的解决方案。 –