プロジェクト以下の構造を有する:モジュールの全ての機能を取得
modulename
├── __init__.py
│
├── one
│ ├── function_1.py
│ ├── function2.py
│ └─── __init__.py
│
└── two
├── another_function.py
├── yet_another_function.py
└─── __init__.py
各.py
(空である__init__.py
」sは除く)の線に沿ってコンテンツがあります
def foo(x):
return x
def bar(x):
return x + 2
への次の方法でモジュールをインポートしてください:import modulename.one.function1.foo
。私がやりたいことは、function1
またはanother_function
のように、最後の2番目のファイル名がすべて.py
であることです。
提案ソリューションは、これまで失敗してきました:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
になり
dir(modulename.one)
。help(modulename.one)
実際には、機能ファイルの名前はPACKAGE CONTENTS
の下に含まれています。PACKAGE CONTENTS
のリストを入手するにはどうすればよいですか?
EDIT:(誰かが示唆したように)私は__init__.py
年代の__all__
使用することができますが、私は、単純な組み込み関数やモジュールを好むだろう。
それはうまくいくようですが、自分で '__all__'を書かなければならないと理解していますか?それとも私は誤解しましたか?私はプログラム的に見つけ出す方法があれば好きです。 –
はい、あなたは '__all__'をあなた自身で書く必要があります。しかし、 '__init __。py'はpythonモジュールであるため、glob.globとimportlib.import_moduleを使用してコードを実装することができます。 – Martin
それは可能な解決策になります(そして、より良い回答が投稿されなければ私はそれを行います)。私はまだ最終的な単純な解決策を待っています。 –