一個項目具有以下結構:得到一個模塊的所有功能
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
這將是一個可能的解決方案(如果沒有更好的答案張貼我會這樣做)。我仍然會等待最終更簡單的解決方案。 –