"from foo import *"
を呼び出すときにインポートするものをリストする方法を教えてください。私はsys.modules.keys()を試しましたが、これはより低レベルのデータ型を提供しています。"foo import *から"を使用するときに読み込まれるもの
答えて
あなたは*
なしfoo
をインポートする必要がありますので、あなたはfoo
内のすべての名前を取得dir
を使用することができます。それは汚染としてfrom foo import *
を実行し、
import foo
print dir(foo)
これは、['__builtins__'、 '__doc__'、 '__file__'、 '__name__'、 '__package__'、 '__path__']のみを出力しますが、モジュールバーはここにリストしてはいけません。 – user1767754
サブモジュールは親モジュールの一部ではありません。 – Daniel
Allrightどのようにサブモジュールがロードされているのか、またはpartentモジュールの一部であるのか分かりますか? – user1767754
を一般的なPythonのルールとしては悪いスタイル(非ニシキヘビ)と考えられています名前空間。
私はあなたの質問にいくつかの考えを与え、ここで私が思い付いたことがあります。今、あなたは、あなたのモジュール/ライブラリfoo
をインポートし、この関数に渡して、取得することができます
import pkgutil
def list_all_modules(top_level_package):
modnames = []
package = top_level_package
prefix = package.__name__ + "."
for importer, modname, ispkg in pkgutil.iter_modules(package.__path__, prefix):
modnames.append(modname)
if ispkg:
module = __import__(modname, fromlist="dummy")
recurse_modnames = list_all_modules(module)
modnames += recurse_modnames
return modnames
を:コピー/ iPythonの便利な%paste
魔法の機能を使用してiPythonに以下を貼り付け、またはスクリプトに保存し、それを直接実行しますパッケージfoo
の下にあるすべての利用可能なモジュール/サブモジュールの一覧(str
)を返します。これと同じように:試験として
modnames = list_all_modules(foo)
print modnames
、私はhere利用可能html5lib
ライブラリ上でそれを実行します。
In [2]: from pprint import pprint
In [3]: import html5lib
In [4]: modnames = list_all_modules(html5lib)
In [5]: pprint(modnames)
['html5lib.constants',
'html5lib.filters',
'html5lib.filters._base',
'html5lib.filters.alphabeticalattributes',
'html5lib.filters.inject_meta_charset',
'html5lib.filters.lint',
'html5lib.filters.optionaltags',
'html5lib.filters.sanitizer',
'html5lib.filters.whitespace',
'html5lib.html5parser',
'html5lib.ihatexml',
'html5lib.inputstream',
'html5lib.sanitizer',
'html5lib.serializer',
'html5lib.serializer.htmlserializer',
'html5lib.tokenizer',
'html5lib.treeadapters',
'html5lib.treeadapters.sax',
'html5lib.treebuilders',
'html5lib.treebuilders._base',
'html5lib.treebuilders.dom',
'html5lib.treebuilders.etree',
'html5lib.treebuilders.etree_lxml',
'html5lib.treewalkers',
'html5lib.treewalkers._base',
'html5lib.treewalkers.dom',
'html5lib.treewalkers.etree',
'html5lib.treewalkers.genshistream',
'html5lib.treewalkers.lxmletree',
'html5lib.treewalkers.pulldom',
'html5lib.trie',
'html5lib.trie._base',
'html5lib.trie.datrie',
'html5lib.trie.py',
'html5lib.utils']
これは間違いなくこれを行うための非神託の方法のように感じているが、誰もがより良い方法を持っている場合、私に知らせてください。 :)
- 1. Silverlight import App.xamlから動的にxapが読み込まれる
- 2. なぜピクチャファイルから読み込むときにパンダがモジュールを読み込もうとしますか?
- 3. stdinからの読み込みをもっとコマンドできますか?
- 4. スパークの使用s3から読み込み、s3から書き込むことはできますか?
- 5. ファイルを読み込もうとしているときにページが読み込まれない
- 6. テキストファイルから読み込むときにApache Ignite Cacheを読み込む方法
- 7. jqueryを使用してさらに読み込みますか?
- 8. Windowsアプリケーションからweb.configを読み込もうとするときの問題
- 9. ロックを使用すると、読み取りと書き込みがキャッシュからフラッシュされますか?もしそうなら、どうですか?
- 10. Javaを使用して積極的に書き込まれているファイルから読み込み[改善]
- 11. ローカルファイルを読み込むときに使用するNSDataReadingOptionsはどれですか?
- 12. webpackを使用しているときにPNGが読み込まれない
- 13. JAVA - ファイルからの読み取りと別のものへの書き込み
- 14. スクリプトが最初に読み込まれるべきか、イメージが読み込まれるべきですか?
- 15. スカラーを使用してhdfsからデータを読み込みます
- 16. PyImport_ImportModuleとimport文を異なる名前空間に読み込みますか?ここ
- 17. SnappyData:SnappySessionを使用できるようにbuild.sbtとimportステートメントに入れるもの
- 18. ArduinoからシリアルCOMを使用してJavaでデータを書き込み、読み込みます。
- 19. Angular2インポート構文: "import * as <foo>" vs "import {<foo>}"
- 20. プラグインの読み込みに失敗しました: 'eslint-plugin-import'
- 21. スレッドを使用してソケットから複数の読み込み/書き込みを処理するには?
- 22. InputStreamからの読み込み速度とFileOutputStreamによる書き込み
- 23. InputStreamからの読み込みとOutputStreamへの書き込み
- 24. ローカルファイルからの書き込みと読み込みiPhone
- 25. cmd、txtからの書き込みと読み込み
- 26. ファイルからバイト[]を読み込み、読み込みます
- 27. scanner、bufferedreader、filereaderを使用しているときにjavanullpointerをファイルから読み込みます。
- 28. ファイルから読み込み、読み込み関数を使用してchar配列に格納する
- 29. ウェブワーカーを使用しているときにバッファジオメトリが読み込まれない
- 30. 読み込まれたモジュールが読み込み専用の場合、どのようにES6の読み込みモジュールをモックできますか?
あなたはfooで呼び出せるオブジェクトとメソッドと関数のリストをお探しですか? – Ben
私は1つのディレクトリに複数のモジュールがあり、mymodules import *から*実際に何がロードされたのかを知りたいと思います。 – user1767754
そしてなぜ我々はそれをしないのか知っています。 –